當構建 JSON API 時,您可能常常需要把模型和關聯對象轉換成數組或JSON。所以Eloquent里已經包含了這些方法。要把模型和已載入的關聯對象轉成數組,可以使用 toArray方法:
$user = User::with('roles')->first();
return $user->toArray();
注意:也可以把整個的模型集合轉換成數組:
return User::all()->toArray();
將模型轉換成 JSON
要把模型轉換成 JSON,可以使用 toJson 方法:
return User::find(1)->toJson();
從路由中返回模型
注意當模型或集合被轉換成字符串類型時會自動轉換成 JSON 格式,這意味着您可以直接從路由返回 Eloquent 對象!
Route::get('users', function()
{
return User::all();
});
轉換成數組或 JSON 時隱藏屬性
有時您可能想要限制能出現在數組或 JSON 格式的屬性數據,比如密碼字段。只要在模型里增加 hidden 屬性即可
class User extends Model {
protected $hidden = ['password'];
}
注意: 要隱藏關聯數據,要使用關聯的方法名稱,而不是動態獲取的屬性名稱。
此外,可以使用 visible 屬性定義白名單:
protected $visible = ['first_name', 'last_name'];
有時候您可能想要增加不存在數據庫字段的屬性數據。這時候只要定義一個獲取器即可:
public function getIsAdminAttribute()
{
return $this->attributes['admin'] == 'yes';
}
定義好獲取器之后,再把對應的屬性名稱加到模型里的 appends 屬性:
protected $appends = ['is_admin'];
把屬性加到 appends 數組之后,在模型數據轉換成數組或 JSON格式時就會有對應的值。在 appends數組中定義的值同樣遵循模型中 visible和 hidden的設定
原文地址:http://wenda.golaravel.com/question/1663
