多对多的雄辩关系

时间:2014-04-10 02:50:40

标签: php laravel polymorphism many-to-many eloquent

我正在尝试使用Laravel 4.1和Eloquent模型创建多对多的关系。我有3张桌子 - 歌曲,艺术家和歌曲创作者:

---- songs 
        -- id
        -- title
        -- genre

---- artists
        - id
        - name

---- song_artist
        - id
        - song_id
        - artist_id

由于每首歌曲可以有多位艺术家,每位艺术家都可以拥有多首歌曲,因此我假设我需要使用morphToMany()方法而不是hasMany()hasManyThrough()方法。

如何设置关系,以便我可以通过$song->artists()访问与歌曲相关的艺术家,以及使用$artist->songs()访问与aritst相关的歌曲?

我已经在搜索了其他问题,例如this onethis onethis one

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

song_artist重命名为artist_song,然后使用belongsToMany

如果您不想重命名表格,请手动设置:

// In Artist
return $this->belongsToMany('Song', 'song_artist');

// In Song
return $this->belongsToMany('Artist', 'song_artist');