[英]Laravel 5.5 Collection where like
我正在使用集合过滤数据。 但是我需要使用类似的方法。 我试图这样写:( ('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集合进行过滤,那么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']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.