【问题标题】:Laravel Eloquent accessing a 3rd relationshipLaravel Eloquent 访问第三关系
【发布时间】:2020-07-03 21:06:21
【问题描述】:

我有 4 个模型,User、Profile、Audit 和 AuditApplications。

我的表结构类似于:

User
    - id
    - ... other user-related fields

Profile
    - id
    - user_id
    - ... various profile fields

Audit
    - id
    - user_id

AuditApplications
    - id
    - audit_id
    - user_id

我的用户模型如下所示:

public function profile()
{
    return $this->hasOne('App\Profile');
}

public function auditApplications()
{
    return $this->hasMany('App\AuditApplications');
}

这样我就可以轻松获取用户及其相关个人资料以及用户申请的审核列表。

接下来,我有 AuditApplications 表,其中包含已申请审计的用户 ID 和审计 ID 列表。我的 AuditApplications 表有以下关系。

public function user()
{
    return $this->belongsTo('App\User');
}

所以我可以返回一个已申请审核的用户列表,如下所示:

$applicants = AuditApplications::where('audit_id', $audit->id)->with('user')->get();

所有这些都按预期运行,但现在我想在获得应用程序列表时访问用户的个人资料。这种关系是距离关系,因此我想在 AuditApplications 模型中获取用户列表及其配置文件。

有没有一种方法可以在 Eloquent 中执行此操作,而无需在我的控制器中创建一个循环,然后循环遍历每个获取个人资料的用户?

【问题讨论】:

  • 许多用户可以申请审计??我猜auditapplications 是数据透视表。要访问配置文件表中的任何内容,请使用 auditapplication->user->profile->profile_attribute,您也可以像 ->with('user','user.profile') 一样急切加载关系
  • @zahidhasanemon 是的,我相信这是正确的关系。创建审核后,许多用户可以要求加入。好的,谢谢,我会考虑你的建议

标签: php laravel eloquent


【解决方案1】:

你只需要->with('user.profile')

【讨论】:

猜你喜欢
  • 2018-11-12
  • 1970-01-01
  • 2017-02-17
  • 1970-01-01
  • 2015-03-09
  • 2015-06-27
  • 1970-01-01
  • 2013-05-27
  • 1970-01-01
相关资源
最近更新 更多