W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
當(dāng)構(gòu)建 JSON API
時(shí),您可能常常需要把模型和關(guān)聯(lián)對象轉(zhuǎn)換成數(shù)組或JSON
。所以Eloquent里已經(jīng)包含了這些方法。要把模型和已載入的關(guān)聯(lián)對象轉(zhuǎn)成數(shù)組,可以使用 toArray
方法:
$user = User::with('roles')->first();
return $user->toArray();
注意:也可以把整個(gè)的模型集合轉(zhuǎn)換成數(shù)組:
return User::all()->toArray();
要把模型轉(zhuǎn)換成 JSON,可以使用 toJson 方法:
return User::find(1)->toJson();
注意當(dāng)模型或集合被轉(zhuǎn)換成字符串類型時(shí)會自動轉(zhuǎn)換成 JSON 格式,這意味著您可以直接從路由返回 Eloquent 對象!
Route::get('users', function()
{
return User::all();
});
有時(shí)您可能想要限制能出現(xiàn)在數(shù)組或 JSON 格式的屬性數(shù)據(jù),比如密碼字段。只要在模型里增加 hidden 屬性即可
class User extends Model {
protected $hidden = ['password'];
}
注意: 要隱藏關(guān)聯(lián)數(shù)據(jù),要使用關(guān)聯(lián)的方法名稱,而不是動態(tài)獲取的屬性名稱。
此外,可以使用 visible 屬性定義白名單:
protected $visible = ['first_name', 'last_name'];
有時(shí)候您可能想要增加不存在數(shù)據(jù)庫字段的屬性數(shù)據(jù)。這時(shí)候只要定義一個(gè)獲取器即可:
public function getIsAdminAttribute()
{
return $this->attributes['admin'] == 'yes';
}
定義好獲取器之后,再把對應(yīng)的屬性名稱加到模型里的 appends 屬性:
protected $appends = ['is_admin'];
把屬性加到 appends
數(shù)組之后,在模型數(shù)據(jù)轉(zhuǎn)換成數(shù)組或 JSON
格式時(shí)就會有對應(yīng)的值。在 appends
數(shù)組中定義的值同樣遵循模型中 visible
和 hidden
的設(shè)定。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: