请求将指定SQL语句转换为完整的Laravel Query Builder代码
完善后的Laravel Query Builder代码
这里需要注意原SQL中JOIN pams_developer的条件包含AND和OR,由于SQL中AND优先级高于OR,我们必须用闭包正确分组条件,避免逻辑偏差。完整代码如下:
DB::table('pams_users') ->select('pams_users.display_name', 'pams_user_levels.description') ->join('pams_developer', function ($join) { // 分组处理逻辑:(用户通过developer_id关联到ID=27的开发者) OR (用户parent_dev直接等于27) $join->where(function ($subQuery) { $subQuery->whereColumn('pams_users.developer_id', 'pams_developer.id') ->where('pams_developer.id', 27); })->orWhere('pams_users.parent_dev', 27); }) ->join('pams_user_levels', function ($join) { $join->on('pams_user_levels.id', '=', 'pams_users.user_level') ->where('pams_user_levels.id', 6); }) ->groupBy('pams_users.display_name') ->get();
代码细节说明:
- select方法:精准指定查询字段,完全对应原SQL的SELECT部分。
- 第一个join闭包:用嵌套闭包包裹
AND条件,确保逻辑和原SQL一致;使用whereColumn比较两个表的字段值,是Laravel推荐的字段对比写法。 - 第二个join闭包:同时关联用户等级表并过滤等级ID为6的记录,和原SQL的JOIN ON子句完全匹配。
- groupBy方法:按照
display_name分组,与原SQL的GROUP BY逻辑一致。 - get():执行查询并返回Eloquent集合形式的结果集。
内容的提问来源于stack exchange,提问作者Ho Wei Kang
相关产品推荐
相关产品推荐

