有没有办法在Eloquent的join子句中使用where
的闭包?
我要做的是:
$model = $model->leftJoin('history', function ($join) {
$join->on('history.record_id', '=', 'work_order.work_order_id');
$join->where('history.tablename', '=', 'test');
$join->where('history.columnname', '=', 'column');
$join->where(function ($q) {
$q->where('history.value_from', '=', '0')
->orWhere('history.value_from', '=', '');
});
$join->where('history.value_to', '>', '0');
});
但显然是部分:
$join->where(function ($q) {
$q->where('history.value_from', '=', '0')
->orWhere('history.value_from', '=', '');
});
不起作用,因为JoinClause
不支持关闭
答案 0 :(得分:0)
您要查找的方法名为whereNested
,可从Illumintate\Database\Query\Builder
班级获取。
不幸的是,传递给连接闭包的$join
参数的类型为Illumintate\Database\Query\JoinClause
,它只有4种方法来处理连接where
,orWhere
,{的语句{1}}和whereNull
。
要完成这项工作,您需要使用whereNotNull
。这应该有效:
DB::raw