如何在laravel中执行多个或查询

时间:2017-03-21 09:39:21

标签: php database laravel eloquent

Product::where('name', 'like', 'something%')->orWhere('category', 'like', 'something%')->orWhere('price', 'like', 'something%')->orWhere('qty', 'like', 'something%')...

我能以更优雅和紧凑的方式做到吗?

3 个答案:

答案 0 :(得分:1)

你可以这样做。将数组传递给单个orWhere子句

Product::where('name', 'like', 'something%')->orWhere(['category', 'like', 'something%'], ['price', 'like', 'something%'],['qty', 'like', 'something%'])...

答案 1 :(得分:0)

您可以使用searchable,查看herehere here

答案 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()链接,因为它更容易阅读代码