代码之家  ›  专栏  ›  技术社区  ›  enbermudas

拉维定义有许多贯穿关系

  •  0
  • enbermudas  · 技术社区  · 7 年前

    我在用laravel 5.7创建论坛时遇到了问题

    我想要这三种模式:用户,类别,线程和帖子。问题是我不知道如何定义一个线程模型关系。

    此模型具有创建者:

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

    …它有一系列的回复:

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

    ……最后,与会者:

    public function participants()
    {
        return $this->hasManyThrough('App\User', '???')
    }
    

    我应该让线程参与者通过它的回复,但它不知道我是否应该将post类设置为这样:

    public function participants()
    {
        return $this->hasManyThrough('App\User', 'App\Post')
    }
    

    ……或者如果这是一个特殊情况,需要考虑一下。有什么帮助吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jonas Staudenmeir    7 年前

    自从 posts 充当数据透视表, BelongsToMany 在这里,关系是更好的选择:

    public function participants()
    {
        return $this->belongsToMany('App\User', 'posts');
    }