如何在 laravel 中的 where 中使用 orWhere()
how to use orWhere() with where in laravel
我正在尝试在 where 和 whereIn 之后使用 orWhere,但如果 orWhere 为真,它 returns 数据。它应该首先根据这些条件检查 where 和 whereIn 数据是否存在,然后才应该检查 orWhere 。
这里是查询
$staff_ids = Staff::select('id')->where('name','like',"%{$request->keyword}%")->pluck('id');
$work_order_ids = WorkSheet::select('work_order_id')->where('worker_data','like',"%{$worker_id}%")->pluck('work_order_id');
$work_orders = WorkingOrders::whereIn('status',[8,9])->whereIn('id',$work_order_ids)->where('id',$request->keyword)->orWhereIn('ranch',$staff_ids)->orWhereIn('cutting_company',$staff_ids)->get();
有条件必须检查
whereIn('status',[8,9])->whereIn('id',$work_order_ids)->where('id',$request->keyword)
这些 orWhere 其中任何一个都可以为真
->orWhereIn('ranch',$staff_ids)->orWhereIn('cutting_company',$staff_ids)
试试这个:
$work_orders = WorkingOrders::whereIn('status',[8,9])
->whereIn('id',$work_order_ids)
->where('id',$request->keyword)
->where(function($q) use($staff_ids){
$q->whereIn('ranch',$staff_ids)
->orWhereIn('cutting_company',$staff_ids);
})
->get();
我正在尝试在 where 和 whereIn 之后使用 orWhere,但如果 orWhere 为真,它 returns 数据。它应该首先根据这些条件检查 where 和 whereIn 数据是否存在,然后才应该检查 orWhere 。
这里是查询
$staff_ids = Staff::select('id')->where('name','like',"%{$request->keyword}%")->pluck('id');
$work_order_ids = WorkSheet::select('work_order_id')->where('worker_data','like',"%{$worker_id}%")->pluck('work_order_id');
$work_orders = WorkingOrders::whereIn('status',[8,9])->whereIn('id',$work_order_ids)->where('id',$request->keyword)->orWhereIn('ranch',$staff_ids)->orWhereIn('cutting_company',$staff_ids)->get();
有条件必须检查
whereIn('status',[8,9])->whereIn('id',$work_order_ids)->where('id',$request->keyword)
这些 orWhere 其中任何一个都可以为真
->orWhereIn('ranch',$staff_ids)->orWhereIn('cutting_company',$staff_ids)
试试这个:
$work_orders = WorkingOrders::whereIn('status',[8,9])
->whereIn('id',$work_order_ids)
->where('id',$request->keyword)
->where(function($q) use($staff_ids){
$q->whereIn('ranch',$staff_ids)
->orWhereIn('cutting_company',$staff_ids);
})
->get();