ホームページ  >  記事  >  バックエンド開発  >  [ Laravel 5.2 ドキュメント ] Eloquent ORM -- コレクション

[ Laravel 5.2 ドキュメント ] Eloquent ORM -- コレクション

WBOY
WBOYオリジナル
2016-06-23 13:18:57979ブラウズ

1. はじめに

Eloquent によって返される複数のレコードを含むすべての結果セットは、get メソッドまたはリレーションシップへのアクセスによって取得された結果を含む、IlluminateDatabaseEloquentCollection オブジェクトのインスタンスです。 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 コレクション オブジェクトの基本クラスから継承するため、コレクションの基本クラスによって提供されるすべての強力なメソッドを継承します。

カウント

diff

フィルター

最初

平坦化

反転

忘れる

forPage

get

groupBy

には

が内破

と交差しています

isEmpty

keyBy

キー

最後の

マップ

マージ

プル

ポップ

プリペンド

プル

プッシュ

プット

ランダム

削減

拒否

反転

検索

シフト

シャッフル

スライス

並べ替え

sortBy

sortByDesc

splice

sum

take

toArray

toJson

変換

unique

where

whereLoose

zip

3.

拡張メソッドでカスタム コレクション オブジェクトを使用する必要がある場合、モデルの newCollection メソッドをオーバーライドできます。

<?phpnamespace 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);    }}

newCollection メソッドを定義した後は、Eloquent がモデルの Collection インスタンスを返すたびにカスタム コレクションを取得します。 。 集める。アプリケーションのすべてのモデルでカスタム コレクションを使用する場合は、モデルの基本クラスで newCollection メソッドをオーバーライドする必要があります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。