Collections in laravel is a fluent object provided by Illuminate\Support\Collection class. It is used to work with arrays of data more efficiently and fluently. Laravel collections provide a wide range of helpful methods for filtering, transforming, and manipulating array-like data.
Using collect() helper function we convert the array into collection or we can create a new collection.
Example:
$array = [1, 2, 3, 4, 5, 6, 7]; // Convert array into collection $collectionA = collect($array); // Create new collection $collectionB = $collectionA->collect(); $collectionB->all(); // [1, 2, 3]
Laravel collections provide a wide range of methods like filtering, mapping, reducing, sorting, transforming, chunking, searching, etc to manipulate data. Here are some examples of that.
Example:
// Creating a collection from an array $collection = collect([825, 524, 89, 93, 4882, 7366, 35, 265, 946, 8635]); // Sorting collection $sortAsc = $collection->sort(); // ascending order $sortDesc = $collection->sortDesc(); // descending order /* Output: $sortAsc = [35, 89, 93, 265, 524, 825, 946, 4882, 7366, 8635] $sortDesc = [8635, 7366, 4882, 946, 825, 524, 265, 93, 89, 35] */ // Filter collection $filtered = $collection->filter(function ($value, $key) { return $value > 1000; }); // Output: [4882, 7366, 8635] // Transform collection $transformed = $collection->map(function ($item, $key) { return $item * 2; }); // Output: [1650, 1048, 178, 186, 9764, 14732, 70, 530, 1892, 17270] // Chunk collection $chunks = $collection->chunk(4); // Output: [[825, 524, 89, 93], [4882, 7366, 35, 265], [946, 8635]]
Laravel collections offer several advantages over using plain PHP arrays with array functions. For example, to search something into a PHP array we need to loop through an array to search for the record value, instead of that we can use the contains() method of Laravel collection.
Example:
/* PHP LOOP */ $condition = false; foreach ($array as $record) { if ($record['name'] == 'John') { $condition = true; break; } } /* Laravel Collections */ $condition = collect($array)->contains(function ($record) { return $record['name'] = 'John'; });
However PHP arrays and array functions have their own place and are still useful. Laravel collections provide an enhanced way to work with data structures. But Choosing between them ultimately depends on the specific use case.