举个小栗子:
$collection->toArray()
上面将集合转成数组的函数是我之前做项目时最常用的命令,我之前没有深入了解collection,Eloquent返回的数据我都会再使用toArray()转成数组,现在想想真是可笑。
collection明明已经给我们做了这么多好用的封装。我竟然又转回数组进行操作了。
如果你也有这种情况,那么这篇文章一定适合你看。
Laravel 集合是 Laravel 框架中一个十分有用的工具。Laravel 集合就像是在 PHP 中的数组,集合的目的在于让我们轻松的对数组进行处理。Laravel查找出来的数据,一般都是集合形式。
测试相关命令
以给定的回调函数筛选集合,只留下那些通过判断测试的项目:
$filtered = $collection->filter(function ($item) { return $item > 2; });
返回集合中,第一个通过给定测试的元素:
$res = collect([1, 2, 3, 4, 5])->first(function ($key, $value) { var_dump('key:' . $key); var_dump('value:' . $value); return $key > 2; }); dd($res);
输出结果是:
string(5) "key:1" string(7) "value:0" string(5) "key:2" string(7) "value:1" string(5) "key:3" string(7) "value:2" 3
返回集合中,最后一个通过给定测试的元素:
$collection->last();
转换命令
将集合转换成纯 PHP 数组:
这是我之前最常用的命令,我封装了基础函数,把集合都转成数组进行使用了,太搞笑了~ 学习技术还是要深入哇。
$collection->toArray();
将集合转换成 JSON:
$collection->toJson();
将多维集合转为一维集合:
$flattened = $collection->flatten();
实例代码:
$collection = collect([1,2,3,'num'=>[4,5,6]]); var_dump($collection); $collection = $collection->flatten(); var_dump($collection); dd('-----');
运行结果:
object(Illuminate\Support\Collection)#2541 (1) { ["items":protected]=> array(4) { [0]=> int(1) [1]=> int(2) [2]=> int(3) ["num"]=> array(3) { [0]=> int(4) [1]=> int(5) [2]=> int(6) } } } object(Illuminate\Support\Collection)#32 (1) { ["items":protected]=> array(6) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) } } "-----"
将集合中的键和对应的数值进行互换:
$flipped = $collection->flip();
代码实例:
$collection = collect(['one'=>1]); print $collection; print PHP_EOL; $collection = $collection->flip(); print $collection; print PHP_EOL; exit();
运行结果:{"one":1} {"1":"one"}
进阶命令
通过键名从集合中移除掉一个项目:
$collection->forget('name');
返回含有可以用来在给定页码显示项目的新集合:
在CMS和需要展示页码的项目中比较实用
$chunk = $collection->forPage(2, 3);
返回给定键的项目。如果该键不存在,则返回 null:
很基础 不用过多介绍
$value = $collection->get('name');
根据给定的键替集合内的项目分组:
有些场景下我们可以在sql查询时直接进行分组,当sql分组查询不方便时,我们可以先拿到数据,再通过集合的groupBy()进行分组
$grouped = $collection->groupBy('account_id');