【问题标题】:Laravel - Get collection from multiple relationshipsLaravel - 从多个关系中获取集合
【发布时间】:2021-03-25 02:01:56
【问题描述】:

如果这不是一个很好的问题,我深表歉意,但我仍然习惯于雄辩的关系。

在我的网站上,用户可以是子频道(子频道)的版主。子频道拥有该子频道的所有版主都可以看到的 modmail。

所以我有一个用户模型,在这个用户模型中我与主持人模型有关系:

public function modOf()
{
    return $this->hasMany(Moderator::class, 'user_id', 'id')->where('activated', 1);
}   

那么在moderator模型中,我有一个指向subchan模型的关系:

public function subchan()
{
    return $this->belongsTo(\App\Subchan::class, 'subchan_id');
}

然后在 subchan 模型中,我有一个返回该子频道的所有 Modmail 的关系:

public function modMail()
{
    return $this->hasMany(\App\ModMail::class, 'subchan_id');
}

所以现在我想创建一个页面,我可以在其中对 Auth 用户拥有的所有 modmail 进行 foreach 和分页。

如何仅将 modmail 从控制器传递到视图中?

【问题讨论】:

  • $user->load('modOf.subchan.modMail');
  • @AnuratChapanond 这不会加载所有以前的关系数据吗?如果我只想要 modmail 怎么办?
  • 是的,你也许可以通过 hasManyThrough() 来通过

标签: laravel


【解决方案1】:

我决定以正常方式执行此操作。我认为会有一种雄辩的关系方式来做到这一点,但我想不会。这是我的解决方案:

    $modOfSubchanIDs = Auth::user()->modOf->pluck('id')->toArray();
    
    $modMails = ModMail::whereIn('subchan_id', $modOfSubchanIDs)->paginate(25);

【讨论】:

    猜你喜欢
    • 2019-06-17
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 2021-07-10
    • 2018-12-25
    • 2021-09-09
    相关资源
    最近更新 更多