【发布时间】:2021-12-30 11:29:06
【问题描述】:
我被 laravel 8 中的查询生成器卡住了
DB::table('users')
->join('contracts', 'users.id', '=', 'contracts.user_id')
->join('roles', 'roles.id', '=', 'users.role_id')
->select('users.id', 'users.username', 'users.email', DB::raw('COUNT(contracts.user_id) as numberOfContracts'))
->groupBy('users.id')
->paginate(10);
我只获得了总条目中的 80 个 .... 我有 103 个用户。
我当然想用分页显示所有用户.....并为每个用户显示角色以及有多少合同。
我做错了什么?
*** 更新 ***
表格如下:
用户(id、用户名、电子邮件、role_id)
合约(id、name、user_id)
角色(ID、姓名)
*** 更新 2 ***
如果运行雄辩
User::with('contracts', 'role')
->withCount('contracts')
->paginate(10);
它返回所有 103 个计数。但是如何使用查询生成器来做到这一点?
【问题讨论】:
-
如果你在 MySQL
SELECT * FROM users GROUP BY users.id中直接查询返回多少行?会不会有重复的ID? -
嗨@Zak。 103 行
-
您是否使用 JOIN 语句运行原始 MySQL 查询?
-
不,我没有运行它
-
在不知道您的表以及其中的内容的情况下尝试一下。我猜您的 JOIN 语句之一是限制返回的数量。