如何使用“或”与多个“何处”在雄辩?

bbuxkriu  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(438)

我怎样才能用雄辩的语言来实现这一点?。

select * from product where name like '%value%' and (product_type = product_type_param or product_type_param = 0);

如果 product_type_param 的价值 0 是供应,它会选择所有类型的产品,考虑到名称也匹配,当然。
我的当前代码:

$result = Product::where( [  ['name', 'like', '%' . 
$searchAttributes['name'] . '%'],
    ['product_type', '=', $searchAttributes['product_type']]]
     )->get();

想法是这样的(请原谅这个例子,它只显示了我的意图):

['product_type', '=', $searchAttributes['product_type']] or [$searchAttributes['product_type'] == 0]]

我应该执行原始查询吗?

xsuvu9jc

xsuvu9jc1#

可以使用闭包函数来限定查询的范围

Product::where('name', 'like', '%' . $searchAttributes['name'] . '%')
        ->where(function($q) use ($searchAttributes) {
             $q->where('product_type', $searchAttributes['product_type'])
               ->orWhere('product_type_param', 0);
        })->get();
xfb7svmp

xfb7svmp2#

使用 orWhere :

Product::where([
       ['column','value'],
       ['another_column','value'],
   ])->orWhere([
      ['column','value']
   ])->get();

相关问题