如何在 laravel 中使用 orWhere() 和 where

Posted

技术标签:

【中文标题】如何在 laravel 中使用 orWhere() 和 where【英文标题】:how to use orWhere() with where in laravel 【发布时间】:2021-10-10 08:53:30 【问题描述】:

我试图在 where 和 whereIn 之后使用 orWhere 但如果 orWhere 为 true 它会返回 data 。它应该首先根据这些条件检查 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)

这些是或其中任何一个都可能为真的地方

->orWhereIn('ranch',$staff_ids)->orWhereIn('cutting_company',$staff_ids)

【问题讨论】:

【参考方案1】:

试试这个:

$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();

【讨论】:

以上是关于如何在 laravel 中使用 orWhere() 和 where的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent Where , orWhere 和 Find 在同一个 eloquent 查询中的问题

Laravel 5.4 查询生成器使用 orWhere 子句时缺少参数 2

Laravel Eloquent 查询使用 WHERE 和 AND orWhere

Laravel where 子句在多个 orWhere 子句之后没有返回数据?

Laravel 查询具有 'where' 和 'orwhere' 无法正常工作

laravel 查询:orWhere:双重条件