国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Eloquent 集合

Eloquent 集合


Eloquent : 集合

簡介

Eloquent 返回的所有多結(jié)果集都是 Illuminate\Database\Eloquent\Collection 對象的實例,包括通過 get 方法檢索或通過訪問關(guān)聯(lián)關(guān)系獲取到的結(jié)果。 Eloquent 的集合對象繼承了 Laravel 的 集合基類,因此它自然也繼承了數(shù)十種能優(yōu)雅地處理 Eloquent 模型底層數(shù)組的方法。

而且,所有的集合都可以作為迭代器,你可以像遍歷簡單的 PHP 數(shù)組一樣來遍歷它們:

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

不過,集合比數(shù)組更加強(qiáng)大,它通過更加直觀的接口暴露出可鏈?zhǔn)秸{(diào)用的 map /reduce 等操作。例如,讓我們移除所有未激活的用戶并收集剩余用戶的名字:

$users = App\User::all();
$names = $users->reject(function ($user) { 
   return $user->active === false;
 })->map(function ($user) { 
   return $user->name;
 });

{note} 大多數(shù) Eloquent 集合方法會返回新的 Eloquent 集合實例,但是 pluck, keys, zip, collapse, flattenflip 方法除外,它們會返回一個 集合基類 實例。同樣,如果 map 操作返回的集合不包括任何 Eloquent 模型,那么它會被自動轉(zhuǎn)換成集合基類。

可用的方法

集合基類

所有 Eloquent 都繼承了基礎(chǔ)的 Laravel 集合 對象;因此,它們也繼承了所有集合基類提供的強(qiáng)大的方法:

all
average
avg
chunk
collapse
combine
concat
contains
containsStrict
count
crossJoin
dd
diff
diffKeys
dump
each
eachSpread
every
except
filter
first
flatMap
flatten
flip
forget
forPage
get
groupBy
has
implode
intersect
isEmpty
isNotEmpty
keyBy
keys
last
map
mapInto
mapSpread
mapToGroups
mapWithKeys
max
median
merge
min
mode
nth
only
pad
partition
pipe
pluck
pop
prepend
pull
push
put
random
reduce
reject
reverse
search
shift
shuffle
slice
some
sort
sortBy
sortByDesc
splice
split
sum
take
tap
toArray
toJson
transform
union
unique
uniqueStrict
unless
values
when
where
whereStrict
whereIn
whereInStrict
whereNotIn
whereNotInStrict
zip

自定義集合

如果你需要在自己的擴(kuò)展方法中使用自定義的 Collection 對象,你可以在你的模型中重寫 newCollection 方法:

<?php
    namespace App;
    use App\CustomCollection;
    use Illuminate\Database\Eloquent\Model;
    class User extends Model{   
     /**
     * 創(chuàng)建一個新的 Eloquent 集合實例對象。
     *
     * @param  array  $models
     * @return \Illuminate\Database\Eloquent\Collection
     */    
     public function newCollection(array $models = [])  
       {   
            return new CustomCollection($models);    
        }
    }

一旦你定義了 newCollection 方法,任何時候都可以在 Eloquent 返回的模型的 Collection 實例中獲得你的自定義集合實例。如果你想要在應(yīng)用程序的每個模型中使用自定義集合,則應(yīng)該在所有的模型繼承的模型基類中重寫 newCollection 方法。

本文章首發(fā)在 LearnKu.com 網(wǎng)站上。