Collection éloquente
Personnaliser les collections
- Eloquent Return Tous les jeux de résultats multiples sont des
IlluminateDatabaseEloquentCollection< Instances d'objets /code>, y compris les résultats récupérés via la méthode
get
ou obtenus en accédant aux relations. L'objet collection d'Eloquent hérite de la classe de base de collection de Laravel, il hérite donc naturellement également de dizaines de méthodes capables de gérer avec élégance le tableau sous-jacent de modèles Eloquent. De plus, toutes les collections peuvent être utilisées comme itérateurs, et vous pouvez les parcourir comme un simple tableau PHP :
$users = App\User::where('active', 1)->get(); foreach ($users as $user) { echo $user->name; }
$users = App\User::all(); $names = $users->reject(function ($user) { return $user->active === false; })->map(function ($user) { return $user->name; });{note} La plupart des méthodes de collecte Eloquent renvoient de nouvelles instances de collection Eloquent, mais
pluck
, les exceptions sont les Méthodes keys
, zip
, collapse
, flatten
et flip
, qui renvoient une collection instance de classe de base. De même, si une opération map
renvoie une collection qui ne contient aucun modèle Eloquent, elle est automatiquement convertie en classe de base de collection. Méthodes disponibles
IlluminateDatabaseEloquentCollection
对象的实例,包括通过 get
方法检索或通过访问关联关系获取到的结果。 Eloquent 的集合对象继承了 Laravel 的 集合基类,因此它自然也继承了数十种能优雅地处理 Eloquent 模型底层数组的方法。
而且,所有的集合都可以作为迭代器,你可以像遍历简单的 PHP 数组一样来遍历它们:
<?php namespace App; use App\CustomCollection; use Illuminate\Database\Eloquent\Model; class User extends Model{ /** * 创建一个新的 Eloquent 集合实例对象。 * * @param array $models * @return \Illuminate\Database\Eloquent\Collection */ public function newCollection(array $models = []) { return new CustomCollection($models); } }
不过,集合比数组更加强大,它通过更加直观的接口暴露出可链式调用的 map /reduce 等操作。例如,让我们移除所有未激活的用户并收集剩余用户的名字:
rrreee{note} 大多数 Eloquent 集合方法会返回新的 Eloquent 集合实例,但是
pluck
,keys
,zip
,collapse
,flatten
和flip
方法除外,它们会返回一个 集合基类 实例。同样,如果map
Classe de base de collection
Tous les objets Eloquent héritent de l'objet de collection de base Laravel ; par conséquent, ils héritent également de toutes les méthodes puissantes fournies par la classe de base de collection :
Custom CollectionSi vous devez utiliser uneall
average
avg
chunk
collapse
combine
concat
contient
containsStrict
count
crossJoin
dd
diff
diffKeys
dump
each
eachSpre ad
every
sauf
filter
first
flatMap
flatten
flip
forget
forPage
get
le groupe
a
implode
intersection
estVide
isNotEmpty
keyBy
keys
last
map
mapInto
mapSpread
mapToGroups
mapWithKeys
max
median
merge
min
mode
nth
only
pad
partition
pipe
pluck
prepend
pull
push
put
aléatoire
réduire
rejeter
inverse
recherche
shift
shuffle
slice
some
trier
sortBy
sortByDesc
splice
split
sum
take
tap
toArray
toJson
transform
union
unique
uniqueStrict
sauf
valeurs
when
where
whereStrict
whereIn
whereInStrict
whereNotIn
whereNotInStrict
zipCollection
personnalisée dans votre propre méthode d'extension Object, vous pouvez surcharger la méthodenewCollection
dans votre modèle :rrreee
rrreeeCollection
对象,你可以在你的模型中重写newCollection
方法:一旦你定义了
newCollection
方法,任何时候都可以在 Eloquent 返回的模型的Collection
实例中获得你的自定义集合实例。如果你想要在应用程序的每个模型中使用自定义集合,则应该在所有的模型继承的模型基类中重写newCollection
Une fois que vous avez défini la méthodenewCollection
, vous pouvez toujours l'utiliser dans ledu modèle renvoyé par Instance Eloquent >Collection
pour obtenir votre instance de collection personnalisée. Si vous souhaitez utiliser une collection personnalisée dans chaque modèle de votre application, vous devez remplacer la méthodenewCollection
dans la classe de base du modèle dont tous les modèles héritent.