php - Laravel 搜索过滤器
问题描述
我正在尝试使用 eloquent 样式获取所有列和值以进行搜索。这是一个过滤器功能。好像我做错了什么。任何帮助将不胜感激。
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 . '%');
});
});
推荐阅读
- gsm - SIM7600 串行端口多路复用器与 Beaglebone
- android - Fabric Plugin 是幻影
- java - @BeforeAll 和 @Transaction 不起作用 - 数据库端的更改不会回滚
- amazon-web-services - AWS ECS 使用 CloudFormation 担任角色。在 ECS 中部署的 Docker 微服务在哪里获得假定角色?
- android - 如何查询where-greater-than然后按firestore中的另一个文档值对其进行排序?
- python - Oozie shell 动作创建 python 虚拟环境
- typescript - 当我知道 `this` 是动态的时,我可以使用 Typescript 强制使用经典函数作为参数而不是箭头函数吗?
- java - 如何使用java从字符位置获取文件中的行号
- javascript - 使用javascript循环更改单词最后一个字符的颜色
- vue.js - 如何将数组参数传递给 url VueJs