In this article series, we go a little deeper into parts of Laravel we all use, to uncover functions and features that we can use in ou...
In this article series, we go a little deeper into parts of Laravel we all use, to uncover functions and features that we can use in our next projects... if only we knew about them!
Here are a few lesser-known collection methods that can be quite handy in various real-world scenarios:
use Illuminate\Support\Collection;
Collection::macro('customMethod', function () {
// Your custom method logic
});
$collection = collect([...]);
// use on any collection object
$result = $collection->customMethod();
concat
for this purpose:$usersFromDatabase = User::where(...)->get();
$usersFromApi = collect([...]);
$combinedUsers = $usersFromDatabase->concat($usersFromApi);
pad
to add dummy tasks if necessary:$tasks = collect([...]);
$paddedTasks = $tasks->pad(10, 'Dummy Task');
shuffle
for this purpose. Additionally, if you're going to select a question from the collection randomly, you can use random
:$questions = collect([...]);
$shuffledQuestions = $questions->shuffle();
$randomQuestion = $questions->random();
$collection = collect([1, 2]);
$matrix = $collection->crossJoin(['a', 'b']);
$matrix->all();
/*[
[1, 'a'],
[1, 'b'],
[2, 'a'],
[2, 'b'],
]*/
$collection = collect([1, 2]);
$matrix = $collection->crossJoin(['a', 'b'], ['I', 'II']);
$matrix->all();
/*[
[1, 'a', 'I'],
[1, 'a', 'II'],
[1, 'b', 'I'],
[1, 'b', 'II'],
[2, 'a', 'I'],
[2, 'a', 'II'],
[2, 'b', 'I'],
[2, 'b', 'II'],
] */
partition
makes this easy:
$students = collect([...]);
list($passingStudents, $failingStudents) = $students->partition(function ($student) {
return $student->grade >= 60;
});
first
and firstWhere
come in handy:
$tasks = collect([...]);
$firstTask = $tasks->first();
$urgentTask = $tasks->firstWhere('priority', 'urgent');
keyBy
is the solution:
$users = collect([...]);
$indexedUsers = $users->keyBy('id');
filter
method is perfect for this:
$orders = collect([...]);
$validOrders = $orders->filter(function ($order) {
return $order->status !== 'canceled';
});
transform
allows you to apply a callback to each item to replace it:
$tasks = collect([...]);
$tasks->transform(function ($task) {
return $task->name . ' - ' . $task->priority;
});
That's all for now, folks! These methods offer ease & flexibility that can be useful when working with Laravel applications.
All the above have been previously shared on our Twitter, one by one. Follow us on Twitter; You'll ❤️ it. You can also check the first article of the series, which is on Top 5 Scheduler Functions you might not know about. Keep exploring, keep coding, and keep pushing the boundaries of what you can achieve.
Subscribe to our "Article Digest". We'll send you a list of the new articles, every week, month or quarter - your choice.
What do you think about this?
Wondering what our community has been up to?