【发布时间】:2017-04-19 14:03:07
【问题描述】:
我想在我的结果 3 个字段中检索每个用户的 walls、follow 和 exos 的计数。
下面的代码为每个字段提供了相同的计数:
$profils = \DB::table('users')
->select(['users.*',\DB::raw('count(follow.user_id) as likeme'), \DB::raw('count(murs.user_id) as murme'), \DB::raw('count(exos.user_id) as exome')])
->leftjoin('murs', 'users.id', '=', 'murs.user_id')
->leftjoin('exos', 'users.id', '=', 'exos.user_id')
->leftjoin('follow', 'users.id', '=', 'follow.user_id')
->groupby('users.id')
->paginate(15);
【问题讨论】:
-
上述查询有什么问题?
-
结果不正确,例如我必须收到:user1 count(follow.user_id) = 5 USER1 count(exos.user_id) = 8 USER1 count(walls.user_id) = 17 但是有了这个请求,我得到每个 count() 的 10 个结果,相反,如果我在我的请求中是单个 count(),我会得到好的结果。
-
@nabil:你有表前缀吗?您是否还可以分享您的 SQL 查询,它可以为您提供所需的结果。
-
@RaunakGupta 表前缀,不!我的 SQL 查询:SELECT Count(follow.user_id) AS likeme, Count(murs.user_id) AS murme, Count(exos.user_id) AS exome, users.id, users.name from users left join murs on(users.id = murs.profil_id) left join exos on(users.id = follow.profil_id) left join follow on(users.id = follow.profils_id) GROUP BY users.id 也使用这个 sql 查询我不想要结果!?
-
将 toSql() 添加到您的代码中,例如:“$profils = \DB::table('users')->select()............->paginate( 15)->toSql() "它会给你原始查询然后分析什么问题
标签: php mysql sql laravel query-builder