Laravel 5.5 Eloquent WhenLoaded关系

时间:2017-09-26 08:51:28

标签: php laravel eloquent

Laravel 5.5 documentation上,条件关系下,

  

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(模型)?

1 个答案:

答案 0 :(得分:3)

急切加载

Eloquent可以在您查询父模型时“急切加载”关系。

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

懒惰加载

在已经检索到父模型后急切加载关系

$user->load('roles');

加载缺失的关系

仅在尚未加载

的情况下加载的关系

$user->loadMissing('roles');