Фильтрация коллекции меняет ее тип (как фильтровать по пользовательскому атрибуту) - PullRequest
0 голосов
/ 09 июля 2019

У меня есть коллекция пользователей, которую я хочу отфильтровать по пользовательскому атрибуту (accessor).

Насколько мне известно, одна вещь, которую я мог бы сделать, id:

$filtered = Users::someScope()
    ->anotherScope()
    ->whereHas(function() { 'whatever' })
    ->get()
    ->where('custom_attribute', 5);

Другая вещь, которую я мог бы сделать, чтобы отфильтровать коллекцию отдельно после ->get():

$filtered = $users->filter(function($value, $key){
    return $value['custom_attribute'] == 5;
});

Затем переменная отправляется в выпадающий список Vuetify для итерации.

Оба дают одинаковый результат. Я думаю, что они меняют тип переменной.

Результаты:

Если я вернусь $filtered, при итерации будет показано [Объект объекта].

Если я вернусь $filtered->all(), он выдаст Htmlspecialchars expects string - array given

Если я вернусь до / без фильтрации - все работает нормально.

1 Ответ

0 голосов
/ 09 июля 2019

Вы можете попробовать с values().Он восстановит ваши ключи.

$filtered = $users->filter(function($value, $key){
            return $value['custom_attribute'] == 5;
        })->values();

Если вам нужно отправить его в json, вы можете сделать это ->toJson()

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