как отфильтровать коллекцию в laravel по лайку - PullRequest
1 голос
/ 05 мая 2020

Я хочу отфильтровать коллекцию по имени, например «% something%» в laravel, но где подобное не работает в коллекции, как я могу решить эту проблему? Я написал этот метод и не работает для фильтра имен

protected function filterData(Collection $collection, $transformer)
{
    foreach (request()->query() as $query => $value) {
        $attribute = $transformer::originalAttribute($query);
        if (isset($attribute, $value)) {
            if ($attribute == 'name') {
                $collection = $collection->where($attribute,'LIKE' ,"%$value%"); // problem is here
            }
            $collection = $collection->where($attribute, $value);
        }
    }
    return $collection;
}

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Вы можете отфильтровать свою коллекцию следующим образом:

$collection = $collection->filter(function ($item) use ($attribute) {
            return strpos($item->name, $attribute) !== false;
        });

Если вы получите сообщение об ошибке Trying to get property 'name' of non-object, просто замените $item->name на $item['name'].

0 голосов
/ 05 мая 2020

Замените на это

$ collection = $ collection-> where ($ attribute, 'LIKE', "%". $ Value. "%"); // проблема здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...