Product::where('name', 'like', 'something%')->orWhere('category', 'like', 'something%')->orWhere('price', 'like', 'something%')->orWhere('qty', 'like', 'something%')...
我能以更优雅和紧凑的方式做到吗?
答案 0 :(得分:1)
你可以这样做。将数组传递给单个orWhere
子句
Product::where('name', 'like', 'something%')->orWhere(['category', 'like', 'something%'], ['price', 'like', 'something%'],['qty', 'like', 'something%'])...
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以使用'array_map()'为orWhere()
构建数组:
$search = 'something';
Product::orWhere(array_map(
function ($i) use($search) { return [$i, 'like', $search.'%']; },
['name', 'category', 'price', 'qty']
))->get();
如果您有许多要搜索的字段,这是一个很好的方法。对于3-4个字段,我只使用简单的orWhere()
链接,因为它更容易阅读代码