我正在尝试使用雄辩的样式来获取所有列和值,以便进行搜索。这是一个过滤器功能。好像我做错了什么。任何帮助将不胜感激。
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 . '%');
});
});