从具有多个条件的两个表格中查询

时间:2016-06-20 10:34:14

标签: php mysql laravel-4

我正在尝试在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 ...

的地点和方式

1 个答案:

答案 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)
});

结果应与原始查询的结果相同。