РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pplrSpClClt 68 of 210 menu

Функция collect и класс Collection в Laravel

Коллекцию можно не только получить из базы, но и создать самому. Для этого в Laravel есть функция collect. Ей передают массив (или другое значение), а на выходе получают объект коллекции:

<?php $arr = [1, 2, 3, 4, 5]; $collection = collect($arr); dump($collection); ?>

Сам объект принадлежит классу Collection. Функция collect - короткий способ создать экземпляр этого класса. Можно написать и длиннее, через new Collection($arr), но на практике почти всегда используют collect.

С коллекцией работают через методы. Например, можно посчитать сумму чисел или взять только чётные - без ручного foreach:

<?php $collection = collect([1, 2, 3, 4, 5]); $sum = $collection->sum(); $even = $collection->filter(function ($item) { return $item % 2 === 0; }); dump($sum, $even); ?>

Когда вы делаете User::all() или Post::get(), Laravel сам собирает модели в такой же объект Collection. То есть ручной collect и выборка из БД дают один и тот же тип данных - дальше к нему применяют одни и те же методы.

Важно: коллекция - это не массив. У неё нельзя просто писать $collection['key'] так же привычно во всех случаях, как у массива (хотя доступ по ключу часто работает), и для отладки удобнее смотреть через dump. Если нужен именно массив PHP, коллекцию потом преобразуют специальными методами - их разберём в следующих уроках.

Создайте коллекцию из массива чисел и выведите ее.

Убедитесь, что результат collect - объект класса Collection.

Получите модели из БД и сравните тип результата с коллекцией, созданной через collect.

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить