我有这个功能:
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正常运行,但是当我将它们连接在一起时,则无法正常工作
我做错了什么,我该怎么办?
您需要在其中使用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] 删除。
我来说两句