参考:https://learnku.com/laravel/t/27647
Laravel Eloquent 通常返回一个集合作为结果,集合包含很多有用的、功能强大的方法。你可以很方便的对集合进行过滤、修改等操作。本次教程就一起来看一看集合的常用方法及功能。
集合并不仅限于 eloquent ,也可以单独使用。但 Eloquent 的结果就是一个集合。你可以使用助手函数 collect
将数组转化为集合。下面所列出的集合的方法适用于 eloquent 结果的同时也适用于集合本身。
比方说,你有一个帖子模型。 你找到所有 php
类别的帖子。
$posts = App\Post::where('category', 'php')->get();
上面的命令返回一个集合。 集合是一个 laravel 类,它在内部使用数组函数并为它们添加许多功能。
你可以简单的使用 collect
方法创建一个集合,如下:
$collection = collect([
[
'user_id' => '1',
'title' => 'Helpers in Laravel',
'content' => 'Create custom helpers in Laravel',
'category' => 'php'
],
[
'user_id' => '2',
'title' => 'Testing in Laravel',
'content' => 'Testing File Uploads in Laravel',
'category' => 'php'
],
[
'user_id' => '3',
'title' => 'Telegram Bot',
'content' => 'Crypto Telegram Bot in Laravel',
'category' => 'php'
],
]);
上面的数组实际上是 Post 模型的值。 在本教程中,我们将使用此数组进行简化。 请记住,一切都将以同样的方式基于 eloquent。
当我们在 eloquent 集合上使用辅助方法时,不会再查询数据库。 我们首先要从数据库中获取所有结果,然后我们使用集合方法来过滤和修改它们,而无需查询数据库。
filter()
filter,最有用的 laravel 集合方法之一,允许您使用回调过滤集合。 它只传递那些返回 true 的项。 所有其他项目都被删除。 filter
返回一个新实例而不更改原始实例。 它接受 value
和 key
作为回调中的两个参数。
$filter = $collection->filter(function($value, $key) {
if ($value['user_id'] == 2) {
return true;
}
});
$filter->all();
all
方法返回底层数组。 上面的代码返回以下响应。
[
1 =