在laravel中创建一个播放列表 - 将许多外键与一个记录相关联?

时间:2015-02-06 04:25:08

标签: php laravel laravel-4 eloquent

我是laravel的新手,之前我从未建立过播放列表类型的实体,所以我正在寻找最佳实践和指导。

我有两个模型歌曲播放列表

播放列表中有很多歌曲。我希望用户能够填写单个表单来创建/编辑播放列表并选择尽可能多的歌曲。

最好的方法是什么?有没有办法将一组id作为外键存储到歌曲表中?或者这应该总是写出许多行到映射表?

laravel或eloquent是否有办法协助这种模型的CRUD?什么是最佳做法?

1 个答案:

答案 0 :(得分:2)

是的,Laravel支持M:N关系。在我看来,做你想做的最简单的方法是创建一个playlist_song表并存储songplaylist之间的所有关系。

您可以使用attachdetachsync方法来控制外来关系。为了更容易理解,我做了一个例子:

class Song extends \Eloquent {
    public function playlists() {
        return $this->belongsToMany('Model\Playlist', 'playlist_song');
    }
}

class Playlist extends \Eloquent {
    public function songs() {
        return $this->belongsToMany('Model\Songs', 'playlist_song');
    }
}

在您的控制器中,您可以使用类似的内容来同步播放列表中包含的所有歌曲:

$playlist->songs()->sync(array(1, 2, 3)); // The numbers are the ids

有关Laravel Eloquent的完整文档,请查看http://laravel.com/docs/4.2/eloquent