Laravel搜索过滤器



为了搜索,我试图使用雄辩的风格获取所有列和值。这是一个Filter函数。我好像做错了什么。任何帮助都将不胜感激。

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. '%');

我认为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 . '%');
});
});    

最新更新