我该如何在Eloquent中实现呢?
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]]
我应该执行原始查询吗?
最佳答案
您可以使用闭包函数来限定查询范围
Product::where('name', 'like', '%' . $searchAttributes['name'] . '%')
->where(function($q) use ($searchAttributes) {
$q->where('product_type', $searchAttributes['product_type'])
->orWhere('product_type_param', 0);
})->get();
关于php - Eloquent 如何在多个“何处”中使用“或”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52153697/