繁体   English   中英

Laravel 5.5 Collection在哪里像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM