最适合入门的Laravel初级教程(十)集合Collections

我们从数据库查出来了数据;
但是我们发现它并不是我们以为的数组形式;

这就要讲讲 collection 对象了;
laravel 中 collection 是比数组更高等公民般的存在;
我们可以像对待数组一样的来操作 collection;
而且它还能以链式操作的方式便捷易读的处理数据;
所有文字都苍白;所有语言都无力;
咱直接举几筐栗子更直观的来讲解;

我们定义一个数组;

        $array = [
            '', '帅', '白', 0, '俊', false, '遥', null, '博', '客'
        ];

把上面这个数组变成 cllection 很简单;
直接调用 collect 函数即可;

        $collect = collect($array);

然后我们就能像数组一样取值循环了;

        dump($collect[0]);
        foreach ($collect as $K => $v) {
            dump($v);
        }

但如果仅仅是这就不值得追捧了;
下面才是见证奇迹的时候;
我有这么一系列操作;
$array 中的帅字去掉;
接着过滤掉其中为假的值;
最后用 - 连接起来拼成 '白俊遥博客';
我们先用数组函数来实现;

        // unset() 删除 '帅' 字
        // array_filter() 过滤为假的值
        // implode() 用 - 连接
        unset($array[1]);
        dump(implode('-', array_filter($array)));

我们再用 collect 再实现一遍;

        // forget() 删除 '帅字'
        // filter() 过滤为假的值
        // implode() 用 - 连接
        dump($collect->forget(1)->filter()->implode('-'));

两种方式打印出来的结果是一样的;

如果操作再复杂点;
都用函数一层一层的的套的话;
想想都让人崩溃;
还是链式操作即直观又美观;
有木有再次开始感受到 laravel 的优雅了;
这只是拿出了 3 个方法示例;
collection 其实有一大堆的功能可以供我们使用;

完整的文档链接在这里;
童鞋们可以挨个自行体验了;
Laravel 的集合 Collection
由于从数据库取出的数据本身就是一个 collection ;
所以可以直接使用这些方法;

DB::table('articles')->where('id', '>', 1)->get()->pluck('title')->implode('-');

我当年刚学 laravel 的时候还是习惯数组;
所以每次都用 ->toArray() 把 collection 转成数组了;
甚至都在改造框架以达到从数据库取出来直接是数组的数据类型;
直到后来我慢慢了理解 collection 的强大;
才深深的明白了我的愚蠢;
所以我特意把 collection 拎出来写一篇文章;
希望能引导童鞋们正确并善于使用集合;

白俊遥博客
请先登录后发表评论
  • 最新评论
  • 总共21条评论
白俊遥博客

老铁 echo("");:666啊

2018-03-04 09:53:00 回复

白俊遥博客

心雨:4bcb76924cfd670d92010a19f6af5a4d感谢分享分

2018-03-03 17:44:18 回复

白俊遥博客

心雨:6f92c250d196793b6475f0d3f2dd3cc2感谢分享

2018-03-03 17:43:09 回复

白俊遥博客

二十三岁的九局下半丶:元宵节快乐!!!

2018-03-02 15:49:59 回复

白俊遥博客
  • 云淡风晴 回复 二十三岁的九局下半丶:同乐;哈哈;
  • 2018-03-04 22:29:48 回复
白俊遥博客

mrhopelee:从一看到十,很棒的入门文章,感谢~

2018-03-02 15:37:58 回复

白俊遥博客

cantinzing:坐等更新  

2018-03-02 10:40:19 回复

白俊遥博客
  • 云淡风晴 回复 cantinzing:不用等了;更新完了;
  • 2018-03-04 22:30:02 回复
白俊遥博客

yymmhh白俊遥博客laravel中的集合功能强大的一笔

2018-02-28 19:52:36 回复

白俊遥博客

加藤非:非常谢谢大佬分享

2018-02-27 21:46:15 回复

白俊遥博客

徐逸以轩 :感谢分享

2018-02-25 21:28:19 回复

白俊遥博客

国飞Zhang。:b645c683ae94c55de46d50bde1477ae3   出现这个代码怎么回事

2018-02-24 16:42:01 回复

白俊遥博客

青衫拂袖白俊遥博客

2018-02-23 22:40:54 回复

白俊遥博客
  • 加藤非 回复 青衫拂袖:哈哈哈
  • 2018-02-27 21:50:22 回复
白俊遥博客

等待:哈哈哈

2018-02-13 00:23:28 回复

白俊遥博客

为人生而奋斗!:不错啊

2018-02-09 22:32:16 回复

白俊遥博客

flyingdreams1111:博主,后续还会有嘛?前头的已学完

2018-02-09 20:35:08 回复

白俊遥博客
  • 云淡风晴 回复 flyingdreams1111:更新完了;
  • 2018-03-04 22:30:24 回复
白俊遥博客

Jerry白俊遥博客

2018-02-08 15:16:35 回复

白俊遥博客

快乐远〖航〗:相当透彻

2018-02-06 20:13:35 回复

白俊遥博客

J白俊遥博客

2018-02-06 17:38:31 回复

白俊遥博客
  • AAAAA. 回复 J白俊遥博客
  • 2018-02-08 15:58:31 回复
白俊遥博客
  • 回复 AAAAA.:想看一下你这边的回复是无限级的吗?
  • 2018-02-09 18:53:40 回复
白俊遥博客
  • i++ 回复 :是的吧
  • 2018-02-24 14:31:32 回复
白俊遥博客

Only Strive白俊遥博客 腻害

2018-02-05 17:52:15 回复

白俊遥博客

微链源码网:5G云网络

2018-02-05 15:52:25 回复

白俊遥博客

nothing.:厉害

2018-02-05 12:03:29 回复

白俊遥博客

木-微博白俊遥博客

2018-02-05 01:29:46 回复

白俊遥博客
  • 火你大哥 回复 木-微博白俊遥博客看看
  • 2018-03-21 20:59:46 回复