考虑:
用户可以喜欢很多地方,而一个地方可以被很多用户喜欢
用户可以将许多地点添加到他的愿望清单中,并且该地点可以位于
许多用户的愿望清单
“喜欢”和“愿望清单”功能都将使用多对多关系。对于这两种功能,我肯定需要链接“用户”表和“地方”表,因为用户会喜欢/希望列出某些地方
Laravel对于数据透视表的命名约定是按字母顺序将表名单数化,并用下划线分隔。因此,让我们以第一个示例为例:
我的第一个用于存储喜欢的中间表将被称为Place_User。到目前为止,一切都很好。
但是,我的第二个中间表也连接了Users和Places表,它只是不存储喜欢的位置,而是存储愿望清单的位置,因此这意味着第二个表也应称为Place_User。这显然会导致一些问题。
我已经完成了类似的功能,并且在启动心愿单功能之后,我意识到我已经在中间表旁边拥有了所有需要的表,但是,按照我的约定,心愿单的中间表应称为与喜欢的中间表相同。
在这种情况下,我打算做什么?
最佳答案
只需以其他方式命名您的数据透视表,例如place_user_like
和place_user_wishlist
。
然后在您的用户模型中,您可以编写此代码
public function likedPlaces() {
return $this->belongsToMany('App\Place', 'place_user_like');
}
public function wishlistedPlaces() {
return $this->belongsToMany('App\Place', 'place_user_wishlist');
}