Введение в коллекции в Laravel
Когда вы получаете модели из базы
данных - через get,
all и похожие методы -
Laravel возвращает не обычный
массив PHP, а коллекцию. Это
специальный объект, внутри которого
лежат ваши записи, но работать
с ним удобнее, чем с «голым»
массивом.
По сути коллекция - обёртка над набором элементов. Снаружи вы видите знакомый список моделей или значений, а внутри доступны готовые операции: отфильтровать лишнее, преобразовать каждое значение, отсортировать, посчитать сумму, взять первые несколько элементов, сгруппировать по полю и многое другое. Всё это делается методами коллекции, часто в виде цепочки вызовов.
В повседневной работе с Eloquent коллекция появляется почти всегда: выбрали посты, юзеров, товары - получили коллекцию. Дальше уже в PHP (в контроллере, сервисе, Blade) решаете, что с этими данными сделать: оставить только активные, вытащить только имена, отсортировать по дате, посчитать среднюю цену.
Часть задач можно решить и в SQL
(условия в where, сортировка
в запросе). Но когда данные уже
загружены или логика удобнее
на стороне PHP, методы коллекции
дают гибкий и читаемый способ
обработать набор без ручных циклов
и временных массивов.
В следующем уроке получим посты из базы и убедимся на практике, что результат - коллекция. Затем научимся создавать коллекции вручную и разберём методы по темам: получение элементов, проверки, фильтрация, преобразование, сортировка и так далее - от самых частых к более редким. Сейчас важно понять идею: коллекция - это результат выборки из БД (и не только) плюс набор удобных операций над этими данными.
Что возвращает Laravel при выборке
моделей через get -
обычный массив или коллекцию?
Какие операции можно выполнять над коллекцией? Приведите несколько примеров.
Когда удобнее обрабатывать данные методами коллекции, а когда - условиями в SQL-запросе?