轉(zhuǎn)換成數(shù)組 / JSON

2018-02-24 15:53 更新

將模型數(shù)據(jù)轉(zhuǎn)成數(shù)組

當(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

要把模型轉(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();
});

轉(zhuǎn)換成數(shù)組或 JSON 時(shí)隱藏屬性

有時(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ù)組中定義的值同樣遵循模型中 visiblehidden的設(shè)定。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號