关系3表Laravel

时间:2014-08-25 06:10:42

标签: php laravel eloquent fluent

我有3张桌子:

播放列表

id | secret | [...]
1    xjdjd    
2    dzfze

playlists_songs

id | playlist_id | song_id | [...]
1    1             83
2    1             32

歌曲

id | name | [...]
22

我想要获取播放列表中的所有歌曲。

现在我的代码看起来像:

<?php

class Playlist extends Eloquent {

public function playlistSongs()
{
    return $this->hasMany('PlaylistSong');
}



<?php

class PlaylistSong extends Eloquent {


    public function playlist()
    {
        return $this->belongsTo('Playlist');
    }

}

现在我可以像这样获取播放列表中的所有“播放列表歌曲”:

    // Check if the playlist exists
    $playlist = Playlist::where('secret', $secret)->firstOrFail();


    // We want fetch all songs of a playlist
    $playlistSongs = $playlist->playlistSongs()->get();

但我不知道如何获取所有歌曲的名字......

祝你有个美好的一天:)

1 个答案:

答案 0 :(得分:1)

您所描述的是many-to-many关系。在Laravel中,它被描述为:

class Playlist extends Eloquent {

    public function songs()
    {
        return $this->belongsToMany('song', 'playlists_songs', 'playlist_id', 'song_id');
    }

}

现在,您可以通过以下网址获取播放列表中的所有歌曲:

$playlist->songs