最适合入门的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 拎出来写一篇文章;
希望能引导童鞋们正确并善于使用集合;

白俊遥博客
请先登录后发表评论
  • latest comments
  • 总共34条评论
白俊遥博客

随心。 :大佬,如果是做微信小程序之类的,就不能在视图中设置{{csrf_field()}}这个来防止外站提交了,这个时候该怎么做呢白俊遥博客

2019-02-20 17:58:19 回复

白俊遥博客

建奇A :小程序属于api类操作,用户信息提交的时候要带上uid和token等加密参数 来验证用户是否合法用户,验证参数可以放到body体也可以放到header头

2019-03-30 19:03:35 回复

白俊遥博客

天青色等烟雨 :很棒的文章!支持!

2018-10-05 22:18:02 回复

白俊遥博客

花舞千魂殇 :我也是 一看到集合就想转为数组 , 但是经过阿婆主介绍 发现这个集合真的很潮啊

2018-08-01 09:23:16 回复

白俊遥博客

老铁 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 回复

白俊遥博客

=͟͟͞͞若=͟͟͞͞水 :+1

2018-08-24 11:54:05 回复

白俊遥博客

cantinzing :坐等更新  

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

白俊遥博客 白俊遥博客

云淡风晴 :不用等了;更新完了;

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 回复

白俊遥博客 白俊遥博客

云淡风晴 :更新完了;

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 回复

白俊遥博客

uw 白俊遥博客

2018-02-08 15:58:31 回复

白俊遥博客

:想看一下你这边的回复是无限级的吗?

2018-02-09 18:53:40 回复

白俊遥博客

i++ :是的吧

2018-02-24 14:31:32 回复

白俊遥博客

null 白俊遥博客 腻害

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 回复