Posted on 26 августа, 2024
Коллекции в Laravel
В Laravel коллекции представляют собой расширенные, мощные обертки вокруг массивов PHP. Они предоставляют удобный и выразительный API для работы с данными, позволяя легко выполнять различные операции, такие как фильтрация, сортировка, трансформация и агрегация данных.
Основные характеристики и возможности коллекций в Laravel:
Создание коллекции: Коллекцию можно создать из любого массива или результата базы данных. Для этого используется класс
Illuminate\Support\Collection;
$collection = collect([1, 2, 3, 4, 5]);
Методы коллекций: Коллекции предоставляют множество методов для работы с данными. Вот несколько наиболее часто используемых:
map
: применяет заданную функцию ко всем элементам коллекции и возвращает новую коллекцию с измененными элементами.
collection = collect([1, 2, 3, 4, 5]);
$squared = $collection->map(function ($item) { return $item * $item; });
filter
: фильтрует коллекцию на основе заданного условия.
$filtered = $collection->filter(function ($value) { return $value > 2; });
reduce
: сворачивает коллекцию до одного значения, используя указанную функцию.
$sum = $collection->reduce(function ($carry, $item) { return $carry + $item; });
pluck
: извлекает определенное значение из каждого элемента коллекции.
$collection = collect([
['name' => 'John', 'age' => 30],
['name' => 'Jane', 'age' => 25],
]);
$names = $collection->pluck('name');
sortBy
: сортирует коллекцию по указанному ключу.
$sorted = $collection->sortBy('age');
Ленивые коллекции: Laravel также поддерживает ленивые коллекции, которые обрабатывают данные по мере необходимости, что полезно для работы с большими наборами данных.
Illuminate\Support\LazyCollection; $lazyCollection = LazyCollection::make(function () { for ($i = 0; $i < 10000; $i++) { yield $i; } });
Цепочка вызовов: Один из наиболее мощных аспектов коллекций — это возможность объединять вызовы методов в цепочки, что делает код более читаемым и выразительным.
$result = collect([1, 2, 3, 4, 5])->filter(function ($item) { return $item > 2; })->map(function ($item) { return $item * 2; }) ->all();
Коллекции делают код в Laravel более лаконичным и понятным, позволяя сосредоточиться на логике приложения, а не на технических деталях манипуляций с данными.
Свежие комментарии