我在解决这个问题时遇到了问题。

我有两个表:

Users
+---------+
| id name |
+---------+
| 1 John  |
| 2 Ann   |
| 3 Joe   |
+---------+

Products
+---------------------+
| id product users_id |
+---------------------+
| 1  Bread      1     |
| 2  Apple      1     |
| 3  Egg        2     |
| 4  Juice      3     |
| 5  Cheese     3     |
| 6  Carrot     3     |
+---------------------+


我想查询一个查询,该查询将显示用户以及产品表中引用该用户的文章数。像这样:

+----------------------+
| name sum_of_products |
+----------------------+
| Ivan       2         |
| Ann        1         |
| Joe        3         |
+----------------------+


我有工作模型和关系。
我可以这样查询一个用户

$sum = User::whereId(1)->products()->count();


但是如何选择一个查询中的所有用户并获得所有计数呢?

最佳答案

您可以通过以下方式获得所需的东西:

$users = User::leftJoin('products', 'users.id', '=', 'products.user_id')->select('user_id', 'user.name')->selectRaw('count(*) as cnt')->groupBy('products.user_id')->get();


然后,您可以像这样访问计数和用户:

foreach($users as $user) {
  $username = $user->name;
  $productCount = $user->cnt;
  ...; //do whatever you need with that data
}

关于php - Laravel-显示Collection中的项目及其相关表中的总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31693123/

10-08 22:24
查看更多