简介

像all()和get(),还有一些处理模型关系这种会返回多条数据的方法,在Eloquent里面会返回一个collection对象集合(对象装在对象里),而不是像DQB的数组结果集合(对象装在数组里)。Collection其实前面已经讲过了,它是在数据查询出来后,提供了一系列处理数据的方法,非常强大实用。

首先,所有的collection都可以遍历:

  1. $users = App\User::where('active', 1)->get();
  2. foreach ($users as $user) {
  3. echo $user->name;
  4. }

但是,collection的能力远远不止于此,非常强大,例如:

  1. $users = App\User::all();
  2. $names = $users->reject(function ($user) {
  3. return $user->active === false;
  4. })
  5. ->map(function ($user) {
  6. return $user->name;
  7. });

这段代码把所有非激活状态的用户去除,并把剩余用户的名字列出来;

Collection 方法

请参考官网。

在模型中自定义Collection

主要方法是覆盖newCollection()方法:

  1. namespace App;
  2. use App\CustomCollection;
  3. use Illuminate\Database\Eloquent\Model;
  4. class User extends Model
  5. {
  6. public function newCollection(array $models = [])
  7. {
  8. return new CustomCollection($models);
  9. }
  10. }
  11. `

CustomCollection()就是你自定义的一个类;在里面你可以组织返回collection的内容;

目前这个方法只是对Usermodel适用,如果你想对所有适用,可以把覆盖方法放到一个所有模型都继承的基类中去。

Laravel 5.1 文档攻略 —— Eloquent Collection的更多相关文章

  1. Laravel 5.1 文档攻略 —— Eloquent:模型对象序列化

    在写api的时候,数据一般是以json格式进行传输的,没有对象可以直接使用.这个时候,对数据的序列化转换就很重要,Eloquent提供了很方便的方法和约定,不仅可以转换,还可以控制里面的键值. 基本用 ...

  2. Laravel 5.1 文档攻略 —— Eloquent: 读取器和修饰器

    date_range 8月前 tag_faces Woody remove_red_eye 1483 chat0 简介 这一章其实很简单,Model的属性不是和数据表的字段一一对应吗? 那么在存储和呈 ...

  3. Laravel 5.1 文档攻略 —— Eloquent:模型关系

    简介 其实大家都知道,数据表之间都是可以关联的,前面讲过了,Eloquent ORM是数据模型操作代替表操作,那么表的关联查询,在Eloquent这里也就是模型间的关联查询,这就是本章的主要内容: E ...

  4. [ Laravel 5.5 文档 ] 处理用户请求 —— HTTP 请求的过滤器:中间件

    [ Laravel 5.5 文档 ] 处理用户请求 —— HTTP 请求的过滤器:中间件 http://laravelacademy.org/post/7812.html 简介 中间件为过滤进入应用的 ...

  5. [ Laravel 5.5 文档 ] 快速入门 —— 目录结构篇

    简介 Laravel 默认的目录结构试图为不管是大型应用还是小型应用提供一个良好的起点.当然,你也可以按照自己的喜好重新组织应用的目录结构,因为 Laravel 对于指定类在何处被加载没有任何限制 — ...

  6. Laravel 5.5 文档 ] 快速入门 —— 安装配置篇

    服务器要求 Laravel 框架对PHP版本和扩展有一定要求,不过这些要求 Laravel Homestead 都已经满足了,不过如果你没有使用 Homestead 的话(那真是一件很遗憾的事情),有 ...

  7. [ Laravel 5.5 文档 ] 底层原理 —— 一次 Laravel 请求的生命周期

     Posted on 2018年3月5日 by  学院君 简介 当我们使用现实世界中的任何工具时,如果理解了该工具的工作原理,那么用起来就会得心应手,应用开发也是如此.当你理解了开发工具如何工作,用起 ...

  8. [ Laravel 5.3 文档 ] 安全 ―― API认证(Passport)保障安全性。

    1.简介 Laravel通过传统的登录表单已经让用户认证变得很简单,但是API怎么办?API通常使用token进行认证并且在请求之间不维护session状态.Laravel使用LaravelPassp ...

  9. [ Laravel 5.5 文档 ] 官方扩展包 —— 全文搜索解决方案:Laravel Scout

    简介 Laravel Scout 为 Eloquent 模型全文搜索实现提供了简单的.基于驱动的解决方案.通过使用模型观察者,Scout 会自动同步更新模型记录的索引. 目前,Scout 通过 Alg ...

随机推荐

  1. IBatis分页显示

    <select id="pagedListOrderOpen"> SELECT * FROM ( </select> <sql id="pa ...

  2. jpa datasource config

    application.properties spring.datasource.driverClassName= spring.datasource.url= spring.datasource.u ...

  3. C#验证子网掩码的正确性

    1.       IP合法关于IP地址的合法性验证很简单,方法也很多,比如字符串分解.正则表达式等. 2.       子网掩码是否合法简单来讲,子网掩码就类似这样一串数字,前面一段是连续的1, 类似 ...

  4. Java数据结构——栈

    //================================================= // File Name : Stack_demo //-------------------- ...

  5. Java抽象类与接口的关系

  6. HTML学习笔记——CSS初涉

    1>嵌入式css写法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http ...

  7. PHP----Ajax异步请求

    需要两个PHP页面:1.php是发出请求和接受请求结果的.2.php是处理请求的结果. 1.php中代码: <a href="#" onclick="sendAja ...

  8. 重启nginx

    在env/nginx/sbin目录下输入:nginx,即可重启

  9. C++ Scripting

    http://www.quepublishing.com/articles/article.aspx?p=26069

  10. js正则,电话,邮箱

    1. <script type="text/javascript"> var str="Is this all th05777-89856825ere is5 ...