[英]Change SQL query IS NULL to Laravel Query Builder/Eloquent
[英]Change SQL into Query Builder in Laravel
这是我的SQL语句
SELECT `pams_users`.display_name,`pams_user_levels`.description FROM pams_users
JOIN pams_developer ON `pams_users`.developer_id=`pams_developer`.id AND `pams_developer`.id=27 OR `pams_users`.`parent_dev`=27
JOIN pams_user_levels ON `pams_user_levels`.id=`pams_users`.user_level AND `pams_user_levels`.id=6
GROUP BY `pams_users`.display_name
这是我基于SQL的查询构建器
DB::table('pams_users')
->join('pams_developer','pams_developer.id','pams_users.developer_id')
->join('pams_user_levels','pams_user_levels.id','pams_users.user_level')
->where('pams_developer.id',27)
->orWhere('pams_users.parent_dev',27)
->where('pams_user_levels.id',6)
->select('developer_name','description','display_name')
->selectRaw('count(pams_users.id) as count')
->groupBy('display_name')
->get();
但是,查询生成器未显示任何错误,但与SQL语句显示了不同的结果。
任何人都可以找出我的查询生成器问题吗?
感谢您对我的查询生成器的任何建议和评论。
问题可能是在那里的Eloquent查询构建器没有封装OR WHERE子句。 您可以将闭包传递到where()
中,以执行此操作,如下所示。
我还使用DB::raw
而不是selectRaw()
方法将选择分组到单个方法调用中。
DB::table('pams_users')
->join('pams_developer','pams_developer.id','pams_users.developer_id')
->join('pams_user_levels','pams_user_levels.id','pams_users.user_level')
->select([
'developer_name',
'description',
'display_name',
DB::raw('count(pams_users.id) as count'), // this avoids the separate selectRaw()
])
->where(function($query) {
$query->where('pams_developer.id',27)
->orWhere('pams_users.parent_dev',27);
})
->where('pams_user_levels.id',6)
->groupBy('display_name')
->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.