雄辩加入 - 关闭

时间:2015-02-28 12:06:05

标签: php laravel eloquent laravel-5 query-builder

有没有办法在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不支持关闭

的位置

1 个答案:

答案 0 :(得分:0)

您要查找的方法名为whereNested,可从Illumintate\Database\Query\Builder班级获取。

不幸的是,传递给连接闭包的$join参数的类型为Illumintate\Database\Query\JoinClause,它只有4种方法来处理连接whereorWhere,{的语句{1}}和whereNull

要完成这项工作,您需要使用whereNotNull。这应该有效:

DB::raw