Laravel 8 條件屬性

2021-07-19 11:47 更新

有些時(shí)候,你可能希望在給定條件滿足時(shí)添加屬性到資源響應(yīng)里。例如,你可能希望如果當(dāng)前用戶(hù)是「管理員」時(shí)添加某個(gè)值到資源響應(yīng)中。在這種情況下 Laravel 提供了一些輔助方法來(lái)幫助你解決問(wèn)題。 when 方法可以被用來(lái)有條件地向資源響應(yīng)添加屬性:

/**
 * 將資源轉(zhuǎn)換成數(shù)組
 *
 * @param  \Illuminate\Http\Request  $request
 * @return array
 */
public function toArray($request)
{
    return [
        'id' => $this->id,
        'name' => $this->name,
        'email' => $this->email,
        'secret' => $this->when(Auth::user()->isAdmin(), 'secret-value'),
        'created_at' => $this->created_at,
        'updated_at' => $this->updated_at,
    ];
} 

在上面這個(gè)例子中,只有當(dāng) isAdmin 方法返回 true 時(shí),secret 鍵才會(huì)最終在資源響應(yīng)中被返回。如果該方法返回 false,則 secret 鍵將會(huì)在資源響應(yīng)被發(fā)送給客戶(hù)端之前被刪除。when 方法可以使你避免使用條件語(yǔ)句拼接數(shù)組,轉(zhuǎn)而用更優(yōu)雅的方式來(lái)編寫(xiě)你的資源。

when 方法也接受閉包作為其第二個(gè)參數(shù),只有在給定條件為 true 時(shí),才從閉包中計(jì)算返回的值:

'secret' => $this->when(Auth::user()->isAdmin(), function () {
    return 'secret-value';
}), 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)