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

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

这就要讲讲 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 拎出来写一篇文章;
希望能引导童鞋们正确并善于使用集合;

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

等待:哈哈哈

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

白俊遥博客

为人生而奋斗!:不错啊

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

白俊遥博客

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

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

白俊遥博客

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 回复
白俊遥博客

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

  • 本博客使用免费开源的 laravel-bjyblog v5.5.0.10 搭建 © 2014-2018 baijunyao.com 版权所有 ICP证:豫ICP备14009546号-3
  • 联系邮箱:baijunyao@baijunyao.com