Laravel在哪里或哪里

杜尚

我有这个功能:

public function indexo2returneditems(Request $request)
    {
        $per_page = $request->per_page;
        $sortBy = $request->sort_by;
        $orderBy = $request->order_by;
        $dateFrom = $request->dateFrom;
        $dateTo = $request->dateTo;

    return response()->json([
        'ok1' => O2order::where([['result', '=', 'Failed'], ['status', '=', 'Failed']])
            ->whereDate('finisheddate', '<=', $dateTo)
            ->whereDate('finisheddate', '>=', $dateFrom)
            ->paginate($per_page),
        'ok2' => O2order::where('deviceexchangedto', '<>', '')
            ->whereDate('finisheddate', '<=', $dateTo)
            ->whereDate('finisheddate', '>=', $dateFrom)
            ->paginate($per_page),
        'not_ok' => O2order::where('result', '=', 'Failed')
            ->where('status', '=', 'Failed')
            ->orWhere('deviceexchangedto', '<>', '')
            ->whereDate('datecreated', '<=', $dateTo)
            ->whereDate('datecreated', '>=', $dateFrom)
            ->paginate($per_page),
    ], 200);
}

Ok1和Ok2正常运行,但是当我将它们连接在一起时,则无法正常工作

我做错了什么,我该怎么办?

高拉夫·古普塔(Gaurav Gupta)

您需要在其中使用where函数

尝试这个

$not_ok = O2order::where(function($query){
                   $query->where([['result', '=', 'Failed'], ['status', '=', 'Failed']])
                         ->orWhere('deviceexchangedto', '<>', '');
                                   })
        ->whereDate('datecreated', '<=', $dateTo)
        ->whereDate('datecreated', '>=', $dateFrom)
        ->paginate($per_page);

因为当您使用orWhere时,只需将它放在查询中,这样您的查询就会变成这样

select * form table1 where a = 'condition 1' and b = '2' or b = '3' and date1 = date(now())

而你想要的是

select * form table1 where a = 'condition 1' and (b = '2' or b = '3') and date1 = date(now())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章