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

如何用Laravel查询构造器实现指定MySQL内连接查询?

用Laravel查询构造器实现指定MySQL查询的方案

嘿,我来帮你把这条原生MySQL查询转换成Laravel查询构造器的写法,完全贴合Laravel的语法风格:

首先先回顾下你的原生查询逻辑:从routes表出发,通过三次内连接分别关联locations表(分别取别名src和dest)、groups表,最终选择指定字段并按routes.id排序。

对应的Laravel查询构造器代码如下:

use Illuminate\Support\Facades\DB;

$routesData = DB::table('routes')
    // 指定要查询的字段,注意区分不同表的同名字段
    ->select(
        'routes.id',
        'src.title',
        'dest.title',
        'groups.title'
    )
    // 第一次内连接locations表,别名为src
    ->join('locations as src', 'src.id', '=', 'routes.src')
    // 第二次内连接locations表,别名为dest
    ->join('locations as dest', 'dest.id', '=', 'routes.dest')
    // 内连接groups表
    ->join('groups', 'groups.id', '=', 'routes.groups')
    // 按routes.id排序
    ->orderBy('routes.id')
    // 获取查询结果
    ->get();

额外小提示

因为三个title字段来自不同表,直接查询的话结果里会出现重复的键名(最终只会保留最后一个title的值),建议给这些字段起别名来区分,修改select部分即可:

->select(
    'routes.id',
    'src.title as source_title', // 来源地标题
    'dest.title as destination_title', // 目的地标题
    'groups.title as group_title' // 分组标题
)

这样获取到的结果数组里每个标题都有清晰的键名,后续处理会更方便。

内容的提问来源于stack exchange,提问作者Raja Durai C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:10:14