Laravel Builder中1 where子句中的2个条件

Ben*_*joe 4 sql laravel eloquent laravel-5

我想将查询转换为laravel构建器格式:

这是我的工作查询:

SELECT * FROM tickets
WHERE tic_status_id = 65
AND (tic_escalation_date1 IS NULL OR tic_escalation_date1 < DATE('2019-06-22 13:00:00'))
AND (tic_escalation_date2 IS NULL OR tic_escalation_date2 < DATE('2019-06-22 13:00:00'))
AND (tic_escalation_date3 IS NULL OR tic_escalation_date3 < DATE('2019-06-22 13:00:00'))
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用whereNull和orWhere,但是它不起作用。

por*_*s Ψ 5

您可以使用参数分组来限制或位置。

将闭包传递给where方法将指示查询构建器开始约束组。闭包将收到一个查询构建器实例,您可以使用它来设置应包含在括号组中的约束。

然后,在约束内,您可以使用whereNull()向查询添加“ where null”子句,或使用orWhereDate()向查询添加“ or where date”语句。注意whereDate方法将从datetime表达式中取出日期部分。

DB::table('tickets')
            ->where('tic_status_id', '=', 65)
            ->where(function ($query) {
                $query->whereNull('tic_escalation_date1')
                      ->orWhereDate('tic_escalation_date1', '<', '2019-06-22 13:00:00');
            })
            ->where(function ($query) {
                $query->whereNull('tic_escalation_date2')
                      ->orWhereDate('tic_escalation_date2', '<', '2019-06-22 13:00:00');
            })
            ->where(function ($query) {
                $query->whereNull('tic_escalation_date3')
                      ->orWhereDate('tic_escalation_date3', '<', '2019-06-22 13:00:00');
            })
            ->get();
Run Code Online (Sandbox Code Playgroud)