You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将MySQL原生查询转换为Laravel 5.5查询构造器

没问题,我帮你把这段原生MySQL查询转换成Laravel 5.5的查询构造器写法,完全适配框架的语法规范,代码如下:

$results = DB::table(function ($query) {
    $query->select(
        'translate_groups.id',
        'translate_groups.name',
        'translate_groups.description',
        'languages.name as languageName'
    )
    ->from('translate_groups')
    ->leftJoin('language_translate_group', 'language_translate_group.translate_group_id', '=', 'translate_groups.id')
    ->leftJoin('languages', 'language_translate_group.language_id', '=', 'languages.id');
}, 'group_table')
->select(
    'group_table.id',
    'group_table.name',
    'group_table.description',
    DB::raw("GROUP_CONCAT(group_table.languageName SEPARATOR ', ') as languages")
)
->groupBy('group_table.id', 'group_table.name', 'group_table.description')
->get();

关键部分说明:

  • 子查询通过闭包定义,并指定别名group_table,和原生SQL的子查询结构完全对应;
  • 因为Laravel查询构造器没有直接封装MySQL的GROUP_CONCAT函数,所以用DB::raw()来直接调用这个原生聚合函数;
  • groupBy()方法传入的字段和原生SQL的分组字段保持一致,确保分组逻辑准确;
  • 最后用get()获取完整结果集,如果需要分页,可替换为paginate($perPage)方法。

内容的提问来源于stack exchange,提问作者Thoan Pham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:49:43