在本系列文章中,我们将深入探讨我们所有人使用的Laravel某些部分,以揭示我们可以在下一个项目中使用的函数和特性...如果我们知道这些忠吉的话!
以下是一些不太为人所知的集合方法,在各种实际场景中都非常实用
- macro():这使得您可以向Laravel集合添加自定义方法,这些方法可以在任何集合实例中使用
use Illuminate\Support\Collection;
Collection::macro('customMethod', function () {
// Your custom method logic
});
$collection = collect([...]);
// use on any collection object
$result = $collection->customMethod();
-
concat():假设您有两个来自不同来源的用户集合,并想将它们合并成一个单一集合。您可以用
concat
来做这件事
$usersFromDatabase = User::where(...)->get();
$usersFromApi = collect([...]);
$combinedUsers = $usersFromDatabase->concat($usersFromApi);
-
pad():您有一个任务集合,但您想要确保它始终包含最小数量的元素。您可以使用
pad
来添加必要的虚构任务
$tasks = collect([...]);
$paddedTasks = $tasks->pad(10, 'Dummy Task');
-
shuffle()和random():假设您有一个测验应用程序,并希望随机打乱题目的顺序。您可以使用
shuffle
来做这件事。此外,如果您要从集合中随机选择一个问题,您可以使用random
$questions = collect([...]);
$shuffledQuestions = $questions->shuffle();
$randomQuestion = $questions->random();
- crossJoin():假设您有两个集合,并希望从中生成所有可能的组合。
$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():想象一下,您有一个学生的集合,并根据他们的成绩(及格或不及格)将他们分成两个组。
partition
使这件事变得简单
$students = collect([...]);
list($passingStudents, $failingStudents) = $students->partition(function ($student) {
return $student->grade >= 60;
});
-
first()和firstWhere():您有一个任务集合,并想检索第一个任务或满足某些条件的第一个任务。
first
和firstWhere
很有用
$tasks = collect([...]);
$firstTask = $tasks->first();
$urgentTask = $tasks->firstWhere('priority', 'urgent');
-
keyBy():您有一个用户集合,并希望按它们的唯一ID进行索引以便快速访问。
keyBy
是解决方案
$users = collect([...]);
$indexedUsers = $users->keyBy('id');
-
filter():您有一组来自API的订单,您想过滤掉已取消的订单。使用
filter
方法是完美的选择。
$orders = collect([...]);
$validOrders = $orders->filter(function ($order) {
return $order->status !== 'canceled';
});
-
transform():您拥有一组任务,并希望通过某种方式修改每个任务。
transform
允许您对每个元素应用回调来替换它。
$tasks = collect([...]);
$tasks->transform(function ($task) {
return $task->name . ' - ' . $task->priority;
});
这就是今天的全部内容,大家!这些方法提供的便捷性和灵活性在处理 Laravel 应用程序时非常有用。
以上所有内容都已在我们的 Twitter 上逐一分享。请关注我们 Twitter;您会喜欢的。您还可以阅读系列的第一篇文章,关于 您可能不知道的顶级调度函数。继续探索,继续编码,继续推动您可以实现的极限。
最后更新时间:1 个月前。
driesvints, ol-serdiuk, issacnguyentx2022 赞同了这篇文章
喜欢这篇文章吗? 让作者知道,并给予他们一个赞!