Eloquent: 集合
简介
所有返回多个模型结果的 Eloquent 方法都会返回 Illuminate\Database\Eloquent\Collection 类的实例,包括通过 get 方法检索的结果或通过关联关系访问的结果。Eloquent 集合对象继承 Laravel 的基础集合,因此它自然继承了几十个用于流畅地处理底层 Eloquent 模型数组的方法。请务必查看 Laravel 集合文档以了解所有这些有用的方法!
所有集合也充当迭代器,允许你像遍历简单 PHP 数组一样遍历它们:
use App\Models\User;
$users = User::where('active', 1)->get();
foreach ($users as $user) {
echo $user->name;
}但是,如前所述,集合比数组强大得多,并提供了各种可以使用直观接口链接的映射/归约操作。例如,我们可以删除所有不活跃的模型,然后收集每个剩余用户的名字:
$names = User::all()->reject(function (User $user) {
return $user->active === false;
})->map(function (User $user) {
return $user->name;
});Eloquent 集合转换
虽然大多数 Eloquent 集合方法返回新的 Eloquent 集合实例,但 collapse、flatten、flip、keys、pluck 和 zip 方法返回基础集合实例。同样,如果 map 操作返回不包含任何 Eloquent 模型的集合,它将被转换为基础集合实例。
可用方法
所有 Eloquent 集合都继承基础 Laravel 集合对象;因此,它们继承了基础集合类提供的所有强大方法。
此外,Illuminate\Database\Eloquent\Collection 类提供了一组超集方法来帮助管理模型集合。大多数方法返回 Illuminate\Database\Eloquent\Collection 实例;但是,某些方法(如 modelKeys)返回 Illuminate\Support\Collection 实例。
appendcontainsdiffexceptfindfindOrFailfreshintersectloadloadMissingmodelKeysmakeVisiblemakeHiddenmergeVisiblemergeHiddenonlypartitionsetAppendssetVisiblesetHiddentoQueryuniquewithoutAppends
append($attributes)
append 方法可用于指示应该为集合中的每个模型追加某个属性。此方法接受属性数组或单个属性: