支持Laravel.io的持续发展 →

您可能从未使用过的Top 10 Laravel Collection方法

9 Jun, 2024 3 min read

在本系列文章中,我们将深入探讨我们所有人使用的Laravel某些部分,以揭示我们可以在下一个项目中使用的函数和特性...如果我们知道这些忠吉的话!

以下是一些不太为人所知的集合方法,在各种实际场景中都非常实用

  1. macro():这使得您可以向Laravel集合添加自定义方法,这些方法可以在任何集合实例中使用

use Illuminate\Support\Collection;

Collection::macro('customMethod', function () {
    // Your custom method logic
});

$collection = collect([...]);
// use on any collection object
$result = $collection->customMethod();
  1. concat():假设您有两个来自不同来源的用户集合,并想将它们合并成一个单一集合。您可以用concat来做这件事
$usersFromDatabase = User::where(...)->get();
$usersFromApi = collect([...]);

$combinedUsers = $usersFromDatabase->concat($usersFromApi);
  1. pad():您有一个任务集合,但您想要确保它始终包含最小数量的元素。您可以使用pad来添加必要的虚构任务
$tasks = collect([...]);

$paddedTasks = $tasks->pad(10, 'Dummy Task');
  1. shuffle()random():假设您有一个测验应用程序,并希望随机打乱题目的顺序。您可以使用shuffle来做这件事。此外,如果您要从集合中随机选择一个问题,您可以使用random
$questions = collect([...]);

$shuffledQuestions = $questions->shuffle();
$randomQuestion = $questions->random();
  1. 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'],
] */

  1. partition():想象一下,您有一个学生的集合,并根据他们的成绩(及格或不及格)将他们分成两个组。partition使这件事变得简单

$students = collect([...]);

list($passingStudents, $failingStudents) = $students->partition(function ($student) {

    return $student->grade >= 60;

});

  1. first()firstWhere():您有一个任务集合,并想检索第一个任务或满足某些条件的第一个任务。firstfirstWhere很有用

$tasks = collect([...]);

$firstTask = $tasks->first();

$urgentTask = $tasks->firstWhere('priority', 'urgent');

  1. keyBy():您有一个用户集合,并希望按它们的唯一ID进行索引以便快速访问。keyBy是解决方案

$users = collect([...]);

$indexedUsers = $users->keyBy('id');

  1. filter():您有一组来自API的订单,您想过滤掉已取消的订单。使用 filter 方法是完美的选择。

$orders = collect([...]);

$validOrders = $orders->filter(function ($order) {

    return $order->status !== 'canceled';

});

  1. transform():您拥有一组任务,并希望通过某种方式修改每个任务。 transform 允许您对每个元素应用回调来替换它。

$tasks = collect([...]);

$tasks->transform(function ($task) {

    return $task->name . ' - ' . $task->priority;

});


这就是今天的全部内容,大家!这些方法提供的便捷性和灵活性在处理 Laravel 应用程序时非常有用。

以上所有内容都已在我们的 Twitter 上逐一分享。请关注我们 Twitter;您会喜欢的。您还可以阅读系列的第一篇文章,关于 您可能不知道的顶级调度函数。继续探索,继续编码,继续推动您可以实现的极限。

最后更新时间:1 个月前。

driesvints, ol-serdiuk, issacnguyentx2022 赞同了这篇文章

3
喜欢这篇文章吗? 让作者知道,并给予他们一个赞!

你可能还喜欢的其他文章

March 11th 2024

如何使用 Larastan 将您的 Laravel 应用从 0 编码到 9

在 Laravel 应用程序执行之前就找到错误,这是可能的,多亏了 Larastan...

阅读文章
July 19th 2024

无需 traits 标准化 API 响应

我注意到大多数用于 API 响应的库都使用 traits 实现...

阅读文章
2024年7月17日

在您的Laravel项目中通过Discord通知收集反馈

如何在Laravel项目中创建一个反馈模块并接收Discord通知...

阅读文章

感谢这些 令人惊叹的公司 对我们的支持

您的标志在这里?

Laravel.io

解决方案、知识分享和社区建设的Laravel服务平台。

© 2024 Laravel.io - 版权所有。