我正在使用集合过滤数据。但我需要使用类似的方法。我曾尝试这样写:('name', 'LIKE', '%value%')
但它不起作用。
这是我的方法:
protected function filterData(Collection $collection, $transformer) {
foreach (request()->query() as $query => $value) {
$attribute = $transformer::originalAttribute($query);
if (isset($attribute, $value)) {
$collection = $collection->where($attribute, $value);
}
}
return $collection;
}
第一个问题是你是否真的知道自己在做什么。如果您从数据库中获取数据,然后过滤它只是为了获取一些元素,那么这绝对不是最好的方法,因为您可以从数据库中获取例如 100000 条记录,但最终只有 2 个元素,这会降低您的应用程序性能。
但假设您确实想使用 Support 集合进行过滤,则没有 where 与 LIKE 一起使用,因为您只是过滤一个数组。如果你想使用类似于 like 的东西来代替:
$collection = $collection->where('name', $value);
您可以使用:
$collection = $collection->reject(function($element) use ($value) {
return mb_strpos($element->name, $value) === false;
});
取决于你真正拥有的收藏而不是$element->name
你可能需要使用$element['name']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)