Laravel Eloquent使用集合来返回结果。集合包含了一些有用的方法,使它们非常强大,使用起来很有帮助。你可以过滤它们, 修改它们, 以及更多非常方便地使用它们。 这就导致你的数组被转换为一个JavaScript对象,而不是一个数组。如果你不熟悉Laravel集合,那么请看我的Laravel集合指南。
拉威尔过滤器
Laravel filter()是一个内置的集合方法,调用 PHP array_filter()方法在底层数组上,它保留了数组的键。 **filter()**方法使用给定的回调对集合进行过滤,只保留那些通过给定真实性测试的项目。
你可以在Illuminate/Support/Collection 类中找到集合过滤方法 。请看下面的方法。
public function filter(callable $callback = null)
{
if ($callback) {
return new static(Arr::where($this->items, $callback));
}
return new static(array_filter($this->items));
}
过滤器函数 以一个回调作为参数,对每个项目运行过滤器。如果某个项目的测试失败,那么它将把它从集合中删除。
现在,让我们看看这个例子的操作。为此, 你需要在你的机器上安装Laravel.我已经安装好了.
从现在开始, 我们将在routes >> web.php 文件中测试每个Laravel集合方法。
在web.php 文件中写下以下代码。
<?php
// web.php
Route::get('/', function () {
$collection = collect([19, 21, 29, 46]);
$filtered = $collection->filter(function ($value, $key) {
return $value > 21;
});
dd($filtered->all());
});
所以, 我们已经检查了每一个集合项目与21, 如果任何项目 >21 的集合,它将被包含在一个新的数组。
现在, 在你的项目根目录下输入以下命令来启动Laravel服务器.
php artisan serve
进入http://localhost:8000, 你会看到下面的输出。
这意味着它已经创建了一个数组, 所有项目>21.其余的项目将被从集合中删除。
如果没有提供回调,集合中所有相当于false的条目都将被删除。
<?php
// web.php
Route::get('/', function () {
$collection = collect([0, 1, 2, 3, 4, 5]);
$filtered = $collection->filter();
dd($filtered->all());
});
在上面的代码中,0 条目将被删除,因为它被当作布尔 **0,也就是假的。因此,**输出结果如下。
本教程就到此为止。
参见
The postLaravel filter:完整的指南首次出现在AppDividend上。