我正在尝试使用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 one,this one和this one。
非常感谢任何帮助。
答案 0 :(得分:3)
将song_artist
重命名为artist_song
,然后使用belongsToMany
。
如果您不想重命名表格,请手动设置:
// In Artist
return $this->belongsToMany('Song', 'song_artist');
// In Song
return $this->belongsToMany('Artist', 'song_artist');