首页 文章

Laravel的关系

提问于
浏览
0

试图找出我需要什么表来使这种关系发挥作用......

我希望用户将帖子标记为收藏并保存,以便当他重新登录时,他可以查看所有他喜欢的帖子 .

所以我有User和Post模型以及它们之间的关系 .

用户有很多帖子,帖子属于用户

我是否需要添加收藏模型并将fav_id添加到User和Post模型?或者可能添加数据透视表?

1 回答

  • 1

    如果将收藏夹定义为用户和帖子之间的简单关系,则不需要模型 . 但是,您确实需要一个数据透视表,称之为 favorites . 它将包含 idpost_iduser_idcreated_atupdated_at .

    然后在您的用户模型中:

    public function favoritePosts()
    {
      return $this->belongsToMany('Post', 'favorites');
    }
    

    而在帖子模型中:

    public function favoritedBy()
    {
      return $this->belongsToMany('User', 'favorites');
    }
    

    所以现在,对于任何给定的用户,您可以执行 $user->favoritePosts 以获取用户具有"favorited"的帖子数组 .

    并且从post对象中,您可以执行 $post->favoritedBy ,以获得已收藏该帖子的一组用户 .

    我没有对此进行过测试,但这似乎可以解决这个问题 .

相关问题