get(); foreach ($users as $user) { echo $user->name; } 然而" />
牛骨文教育服务平台(让学习变的简单)

Eloquent ORM —— 集合

1、简介

Eloquent的方法。

当然,所有集合也是迭代器,允许你像数组一样对其进行循环:

$users = AppUser::where("active", 1)->get();

foreach ($users as $user) {
    echo $user->name;
}

然而,集合比数组更加强大,使用直观的接口提供了各种映射/简化操作。例如,让我们移除所有无效的模型并聚合还存在的用户的名字:

$users = AppUser::where("active", 1)->get();

$names = $users->reject(function ($user) {
    return $user->active === false;})->map(function ($user) {
    return $user->name;
});

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
zip

3、自定义集合

如果你需要在自己扩展的方法中使用自定义的集合对象,可以重写模型上的newCollection方法:

<?php

namespace App;

use AppCustomCollection;
use IlluminateDatabaseEloquentModel;

class User extends Model{
    /**
     * 创建一个新的Eloquent集合实例
     *
     * @param  array  $models
     * @return IlluminateDatabaseEloquentCollection
     */
    public function newCollection(array $models = [])
    {
        return new CustomCollection($models);
    }
}

定义好newCollection方法后,无论何时Eloquent返回该模型的Collection实例你都会获取到自定义的集合。如果你想要在应用中的每一个模型中使用自定义集合,需要在模型基类中重写newCollection方法。