[ Laravel 5.2 文档 ] Eloquent ORM -- 集合
1、简介
Eloquent返回的所有的包含多条记录的结果集都是 Illuminate\Database\Eloquent\Collection对象的实例,包括通过 get方法或者通过访问关联关系获取的结果。Eloquent 集合对象继承自 Laravel的集合基类,因此很自然的继承了很多处理 Eloquent 模型底层数组的方法。
当然,所有集合也是迭代器,允许你像数组一样对其进行循环:
$users = App\User::where('active', 1)->get();foreach ($users as $user) { echo $user->name;}
然而,集合使用直观的接口提供了各种映射/简化操作,因此比数组更加强大。例如,我们可以通过以下方式移除所有无效的模型并聚合还存在的用户的名字:
$users = App\User::where('active', 1)->get();$names = $users->reject(function ($user) { return $user->active === false;})->map(function ($user) { return $user->name;});
注意:尽管大多数 Eloquent 集合返回的是一个新的 Eloquent 集合实例,但是 pluck、 keys、 zip、 collapse、 flatten和 flip方法返回的是集合基类实例。
2、可用方法
所有的 Eloquent 集合继承自 Laravel 集合对象基类,因此,它们继承所有集合基类提供的强大方法:
all
chunk
collapse
contains
count
diff
each
filter
first
flatten
flip
forget
forPage
get
groupBy
has
implode
intersect
isEmpty
keyBy
keys
last
map
merge
pluck
pop
prepend
pull
push
put
random
reduce
reject
reverse
search
shift
shuffle
slice
sort
sortBy
sortByDesc
splice
sum
take
toArray
toJson
transform
unique
values
where
whereLoose
zip3、 自定义集合
如果你需要在自己扩展的方法中使用自定义的集合对象,可以重写模型上的 newCollection方法:
定义好 newCollection方法后,无论何时 Eloquent 返回该模型的 Collection实例你都会获取到自定义的集合。如果你想要在应用中的每一个模型中使用自定义集合,需要在模型基类中重写 newCollection方法。
推荐阅读
-
Laravel框架Eloquent ORM新增数据、自定义时间戳及批量赋值用法详解
-
Laravel框架Eloquent ORM修改数据操作示例
-
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
-
Laravel 5框架学习之Eloquent (laravel 的ORM)
-
laravel5.5源码笔记(八、Eloquent ORM)
-
【Laravel-Eloquent ORM】SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘updated_at‘ in ‘field
-
Laravel 数据库操作 Eloquent ORM
-
laravel 数据迁移与 Eloquent ORM的实现方法
-
Laravel5.7 Eloquent ORM快速入门详解
-
Laravel 5框架学习之Eloquent (laravel 的ORM)_php实例