Laravel搜索过滤器

问题描述 投票:0回答:1

我正在尝试使用雄辩的样式来获取所有列和值,以便进行搜索。这是一个过滤器功能。好像我做错了什么。任何帮助将不胜感激。

protected static function search($query, $fields, $value)
{
    return $query->where(function($query) use ($fields, $value){
        collect($fields)->reduce(function($query, $field) use ($value) {
            return $query->OrWhere($field, 'like','%' . $value . '%');
        }, $query);
    });     
}

当我显式添加列名时,它会起作用。

return $query->where('title', 'like', '%' .$value. '%')
    ->orWhere('fehlercode', 'like', '%' .$value. '%');
php laravel search eloquent
1个回答
0
投票

我认为在这种情况下,reduce会非常激进,这更多是将多个变量串联为一个,each()是一种更好的方法。同样,orWhere()方法以大写字母开头是错误的,Laravel使用psr2,该方法在方法上使用驼峰大小写。

return $query->where(function($query) use ($fields, $value){
    collect($fields)->each(function($field) use ($query, $value) {
        $query->orWhere($field, 'like','%' . $value . '%');
    });
});    
© www.soinside.com 2019 - 2024. All rights reserved.