我正在尝试在Laravel查询中编写此查询
SELECT
table1.*, table2.*
FROM
table1
LEFT JOIN
table2
ON
(table1.id = table2.id AND (table2.field = '' OR table2.field >= '0'))
WHERE
table.id = id
我对如何将内部部分AND ( ... )
添加到查询中有疑问?这是我到目前为止所拥有的
$query = Table::select(
DB::Raw('table1.*, table2.*'))
->leftJoin('table2', function($join) {
$join->on('table1.id', '=', 'table2.id')
->where('table2.field', '=', '')
->orwhere('table2.field', '=', '50');
})->where('table1.id', BaseController::getCurrentUser()->id)
->get();
我想念添加AND
...
答案 0 :(得分:2)
您是否需要将AND
部分作为ON
的一部分?如果将其移至查询的WHERE
部分,则可以使用以下内容:
$query = Table::select('table1.*', 'table2.*')
->leftJoin('table2', 'table1.id', '=', 'table2.id')
->where('table1.id', BaseController::getCurrentUser()->id)
->where(function ($query){
$query->where('table2.field', '')
->orWhere('table2.field', 50)
});
结果应与原始查询的结果相同。