Laravel:使用哪种关系?

时间:2017-09-07 23:09:10

标签: php laravel orm eloquent

我有以下情况:

我正在建立一个艺术家在城市中展示他们最喜欢的景点的网站。 所以: 有一些Cities和一些Artists。城市hasMany SpotsArtistsSpots也通过belongsToMany相关联,因为一个Spot可以由多个Artists推荐。

我现在想要在City中定义一个关系,它给我所有在该城市中都有特色的艺术家(所以基本上寻找与该城市的一个地方相关的艺术家)

我可以使用关系类型吗? 我已经尝试了hasManyThrough,但在spot_id中查找了Artist,这显然不存在,因为艺术家<> Spot是多对多的。

2 个答案:

答案 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')
      }
}