Laravel 5.1 文檔攻略 —— Eloquent Collection

簡介

像all()和get(),還有一些處理模型關係這種會返回多條數據的方法,在Eloquent裏面會返回一個collection對象集合(對象裝在對象裏),而不是像DQB的數組結果集合(對象裝在數組裏)。Collection其實前面已經講過了,它是在數據查詢出來後,提供了一系列處理數據的方法,很是強大實用。數組

首先,全部的collection均可以遍歷:spa

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

可是,collection的能力遠遠不止於此,很是強大,例如:code

  1. $users = App\User::all();
  2. $names = $users->reject(function ($user) {
  3. return $user->active === false;
  4. })
  5. ->map(function ($user) {
  6. return $user->name;
  7. });

這段代碼把全部非激活狀態的用戶去除,並把剩餘用戶的名字列出來;對象

Collection 方法

請參考官網。繼承

在模型中自定義Collection

主要方法是覆蓋newCollection()方法:get

  1. namespace App;
  2. use App\CustomCollection;
  3. use Illuminate\Database\Eloquent\Model;
  4. class User extends Model
  5. {
  6. public function newCollection(array $models = [])
  7. {
  8. return new CustomCollection($models);
  9. }
  10. }
  11. `

CustomCollection()就是你自定義的一個類;在裏面你能夠組織返回collection的內容;it

目前這個方法只是對Usermodel適用,若是你想對全部適用,能夠把覆蓋方法放到一個全部模型都繼承的基類中去。io

相關文章
相關標籤/搜索