【问题标题】:Laravel 5.5 Eloquent WhenLoaded relationshipLaravel 5.5 Eloquent WhenLoaded 关系
【发布时间】:2018-03-07 09:44:33
【问题描述】:

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

【问题讨论】:

  • 据我了解,如果您通过Model::with("roles")$modelObject->load("roles") 加载了关系,roles 将被填充
  • 你可以尝试创建角色资源。

标签: php laravel eloquent


【解决方案1】:

急切加载

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

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

延迟加载

在已经检索到父模型后立即加载关系

$user->load('roles');

加载缺失的关系

仅在关系尚未加载时加载

$user->loadMissing('roles');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 2016-08-13
    • 2018-02-09
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多