part_os
@part_os
Сложное в простом

Как избавиться от array_filter и array_shift?

привет, подскажите красивое решение как избавиться от такой выборки.
На входе получаем коллекцию объектов. После этого необходимо из неё выбрать объект по совпадающему атрибуту.
Для чего это было написано, что бы снизить нагрузку на БД, и на каждой итерации foreach не лезть в базу. В allData - 57 элементов, а collection - 37.
Такой фильтрации сейчас в методе порядком 7, и снизило загрузку с 8 сек до 1. Но выглядит это не очень. Есть у кого идеи?
foreach ($allData as $data) {
    $id = $data->id;
    $items= array_filter($collection->all() , function ($row) use ($id) {
            return $row->attribute === $id;
        });
    $item= array_shift($items);
}
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы