首页 > 解决方案 > Laravel 查询构建器从子查询左连接

问题描述

我正在使用 Laravel 查询生成器并尝试执行以下操作:

$builder = DB::table('mainTable')->where("mainTable.id", "=", 111);

$builder->leftJoinSub(
    DB::table('table2')
        ->where('table2.id', '=', DB::raw("mainTable.subtableId"))
        ->where('table2.region', '=', DB::raw("mainTable.region"))
        ->orderBy('table2.someOrder', 'DESC')
        ->select('kamery2.id')
        ->first(),
    'myId',
    'table2.id',
    '=',
    'myId'
);

我得到

无法绑定多部分标识符“mainTable.subtableId”。

但是,当我用它编写它时DB::raw('...')

$builder->leftJoin(
    'table2',
    'table2.id',
    '=',
    DB::Raw("...")
);

所以我试图找出我做错了什么。我只犯了句法错误吗?或者 Laravel 查询的构建器不允许我想要实现并且我必须使用->leftJoin(.... DB::raw() )

标签: sqllaravelquery-builder

解决方案


推荐阅读