2017-09-26 248 views
4

Laravel 5.5 documentation,下條件關係,它說Laravel 5.5雄辯WhenLoaded關係

whenLoaded方法可以用來有條件地加載關係

我在我的代碼試圖

public function toArray($request) 
{ 
    return [ 
     'id' => $this->id, 
     'name' => $this->name, 
     'email' => $this->email, 
     'roles' => Role::collection($this->whenLoaded('roles')), 
     'remember_token' => $this->remember_token, 
    ]; 
} 

根據文檔,將角色鍵從資源響應完全發送給客戶端之前,因爲關係尚未加載。

如何加載關係?我如何確定一個關係是否被加載?在這種情況下,我如何加載Role(型號)?

+0

據我瞭解,如果您已加載通過'型號枯萎的關係::用(「角色」)的'roles'將充滿'或'$ modelObject->加載( 「角色」)' – apokryfos

回答

2

預先加載

口才在當時「心切負荷」的關係您查詢父模型。

$user = App\User::with('roles')->find($id); 

懶預先加載

要急於負荷父模型後的關係已經被檢索

$user->load('roles'); 

加載缺失的關係

要加載的關係只有 w母雞它尚未加載

$user->loadMissing('roles');