一.查詢構建器的get方法 查詢構建器的get方法返回了一個集合 $users = App\User::where('active', 1)->get(); foreach ($users as $user) { echo $user->name; } 二.訪問器&調整器 1.訪問器:為數據庫的某列在用屬性讀取的時候做處理 class User extends Model{ /** * 獲取用戶的名字 * * @param string $value * @return string */ public function getFirstNameAttribute($value) { return ucfirst($value); } } 調用 $user = App\User::find(1); $firstName = $user->first_name; 2.調整器:為數據庫的某一列在更新的時候做處理 class User extends Model{ /** * 設置用戶的名字 * * @param string $value * @return string */ public function setFirstNameAttribute($value) { $this->attributes['first_name'] = strtolower($value); } } $user = App\User::find(1); $user->first_name = 'Sally'; 3.日期調整器 class User extends Model{ /** * 應該被調整為日期的屬性 * * @var array */ protected $dates = ['created_at', 'updated_at', 'disabled_at']; ... } 如果字段是日期格式時,你可以將其值設置為 UNIX 時間戳,日期字符串( Y-m-d ),日期-時間字符串, Datetime/Carbon 實例,日期的值將會自動以正確格式存儲到數據庫中: $user = App\User::find(1); $user->disabled_at = Carbon::now(); $user->save(); 正如上面提到的,當獲取被羅列在$dates 數組中的屬性時,它們會被自動轉化為Carbon 實例,允許你在屬性上使用任何Carbon 的方法: $user = App\User::find(1); return $user->disabled_at->getTimestamp(); 如果你需要自定義時間戳格式,在模型中設置$dateFormat 屬性,該屬性決定日期屬性將以何種格式存儲在數據庫中、以及序列化為數組或 JSON 時的格式 class Flight extends Model{ /** * 模型日期的存儲格式 * * @var string */ protected $dateFormat = 'U'; } 三.屬性轉換 1.在訪問時將某列轉為另一種類型: class User extends Model{ /** * 應該被轉化為原生類型的屬性 * * @var array */ protected $casts = [ 'is_admin' => 'boolean', //訪問is_admin字段的值時,將其轉為boolean值 ]; } 2.數組轉換 array 類型轉換在處理被存儲為序列化 JSON 的字段是特別有用,例如,如果數據庫有一個 TEXT 字段類型包含了序列化 JSON,添加array 類型轉換到該屬性將會在 Eloquent 模型中訪問其值時自動將其反序列化為 PHP數組: class User extends Model{ /** * 應該被轉化為原生類型的屬性 * * @var array */ protected $casts = [ 'options' => 'array', ]; } array 類型轉換在處理被存儲為序列化 JSON 的字段是特別有用,例如,如果數據庫有一個 TEXT 字段類型包含 了序列化 JSON,添加array 類型轉換到該屬性將會在 Eloquent 模型中訪問其值時自動將其反序列化為 PHP 數組: $user = App\User::find(1); $options = $user->options; $options['key'] = 'value'; $user->options = $options; $user->save(); 五.序列化 1.轉化模型/集合為數組 $user = App\User::with('roles')->first(); return $user->toArray(); $users = App\User::all(); return $users->toArray(); 2.轉化模型為 JSON $user = App\User::find(1); return $user->toJson(); 3.轉為字符串 $user = App\User::find(1); return (string) $user; 轉換后的格式如下: {"id":1,"user_id":1,"name":"\u6700\u65b0\u6d4b\u8bd5","created_at":"2017-05-28 18:44:37","updated_at":"2017-05-31 23:37:55"} 4.隱藏屬性顯示 class User extends Model{ /** * 在數組中隱藏的屬性 * * @var array */ protected $hidden = ['password']; } 5.顯示屬性 class User extends Model{ /** * 在數組中顯示的屬性 * * @var array */ protected $visible = ['first_name', 'last_name']; } 6.追加值到數組 class User extends Model{ /** * 為用戶獲取管理員標識 * * @return bool */ public function getIsAdminAttribute() { return $this->attributes['admin'] == 'yes'; } } 這將在原有的列上添加一列is_admin,這需要通過屬性訪問時才會獲得,如果我們希望在獲得數據的時候被一起返回,則還需要append屬性 class User extends Model{ protected $appends = ['is_admin']; /** * 為用戶獲取管理員標識 * * @return bool */ public function getIsAdminAttribute() { return $this->attributes['admin'] == 'yes'; } }