天天看點

laravel擷取的資料轉換為數組

當建構 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