我有以下情况:
我正在建立一个艺术家在城市中展示他们最喜欢的景点的网站。
所以:
有一些Cities
和一些Artists
。城市hasMany
Spots
。
Artists
和Spots
也通过belongsToMany
相关联,因为一个Spot
可以由多个Artists
推荐。
我现在想要在City中定义一个关系,它给我所有在该城市中都有特色的艺术家(所以基本上寻找与该城市的一个地方相关的艺术家)
我可以使用关系类型吗?
我已经尝试了hasManyThrough
,但在spot_id
中查找了Artist
,这显然不存在,因为艺术家<> Spot是多对多的。
答案 0 :(得分:1)
如果您有多对多关系,则需要对两个表进行规范化,创建新表以存储spot_id和artist_id。我认为在laravel已经处理过了。此链接可能会有所帮助
https://laravel.com/docs/5.5/eloquent-relationships#many-to-many https://www.captechconsulting.com/blogs/resolve-your-many-to-manys-for-accurate-requirements
答案 1 :(得分:0)
虽然这是多对多的关系所以你必须使用belongsToMany
例如:
在城市模特:
class City extends Model{
public function artists(){
return $this->belongsToMany('App\Artist')
}
}
在艺术家模型中:
class Artist extends Model{
public function city(){
return $this->belongsToMany('App\City')
}
}