首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel中的1个where子句中的2个条件

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

Stack Overflow用户
提问于 2019-06-21 04:48:23
回答 3查看 2.7K关注 0票数 4

我想将我的查询转换成格式:

这是我的工作查询:

代码语言:javascript
复制
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'))

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-21 05:04:43

您可以使用参数分组来约束。

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

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

代码语言:javascript
复制
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();
票数 5
EN

Stack Overflow用户

发布于 2019-06-21 04:58:22

您可以尝试以下代码:

代码语言:javascript
复制
    $tickets = DB::table('tickets');
    $tickets->where('tic_status_id', 65);
    $tickets->where(function($query){
        $query->whereNull('tic_escalation_date1');
        $query->orWhereDate('tic_escalation_date1', '<', DATE('2019-06-22 13:00:00'));
    });
    $tickets->where(function($query){
        $query->whereNull('tic_escalation_date2');
        $query->orWhereDate('tic_escalation_date2', '<', DATE('2019-06-22 13:00:00'));
    });
    $tickets->where(function($query){
        $query->whereNull('tic_escalation_date3');
        $query->orWhereDate('tic_escalation_date3', '<', DATE('2019-06-22 13:00:00'));
    });
    $ticket_data = $tickets->get();

更多信息请参考拉拉维尔。如果您有"orWhere“类型以外的列,则可以使用"orWhereDate”代替"DateTime“。

票数 2
EN

Stack Overflow用户

发布于 2019-06-21 05:01:29

你能试试这个吗?

方法一

代码语言:javascript
复制
$query = DB::table( 'tickets')
            ->where( 'tic_status_id' ,'=',65)
            ->whereNull( 'tic_escalation_date1')
            ->orWhere( 'tic_escalation_date1', '<', "DATE('2019-06-22 13:00:00')")
            ->whereNull( 'tic_escalation_date2')
            ->orWhere( 'tic_escalation_date2', '<', "DATE('2019-06-22 13:00:00')")
            ->whereNull( 'tic_escalation_date3')
            ->orWhere( 'tic_escalation_date3', '<', "DATE('2019-06-22 13:00:00')");

方法2 I am Not Sure About the this query will Work Fine

代码语言:javascript
复制
$query = DB::table( 'tickets')
            ->where( 'tic_status_id' ,'=',65)
            ->whereNull( 'tic_escalation_date1')
            ->orWhereDate( 'tic_escalation_date1', '<', "('2019-06-22 13:00:00')")
            ->whereNull( 'tic_escalation_date2')
            ->orWhereDate( 'tic_escalation_date2', '<', "DATE('2019-06-22 13:00:00')")
            ->whereNull( 'tic_escalation_date3')
            ->orWhereDate( 'tic_escalation_date3', '<', "DATE('2019-06-22 13:00:00')");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56697003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档