试图找出我需要什么表来使这种关系发挥作用......
我希望用户将帖子标记为收藏并保存,以便当他重新登录时,他可以查看所有他喜欢的帖子 .
所以我有User和Post模型以及它们之间的关系 .
用户有很多帖子,帖子属于用户
我是否需要添加收藏模型并将fav_id添加到User和Post模型?或者可能添加数据透视表?
如果将收藏夹定义为用户和帖子之间的简单关系,则不需要模型 . 但是,您确实需要一个数据透视表,称之为 favorites . 它将包含 id , post_id , user_id , created_at , updated_at .
favorites
id
post_id
user_id
created_at
updated_at
然后在您的用户模型中:
public function favoritePosts() { return $this->belongsToMany('Post', 'favorites'); }
而在帖子模型中:
public function favoritedBy() { return $this->belongsToMany('User', 'favorites'); }
所以现在,对于任何给定的用户,您可以执行 $user->favoritePosts 以获取用户具有"favorited"的帖子数组 .
$user->favoritePosts
并且从post对象中,您可以执行 $post->favoritedBy ,以获得已收藏该帖子的一组用户 .
$post->favoritedBy
我没有对此进行过测试,但这似乎可以解决这个问题 .
1 回答
如果将收藏夹定义为用户和帖子之间的简单关系,则不需要模型 . 但是,您确实需要一个数据透视表,称之为
favorites
. 它将包含id
,post_id
,user_id
,created_at
,updated_at
.然后在您的用户模型中:
而在帖子模型中:
所以现在,对于任何给定的用户,您可以执行
$user->favoritePosts
以获取用户具有"favorited"的帖子数组 .并且从post对象中,您可以执行
$post->favoritedBy
,以获得已收藏该帖子的一组用户 .我没有对此进行过测试,但这似乎可以解决这个问题 .