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

Creating a playlist in laravel - associating many foreign keys with one record?

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

我有两个模型 songplaylist

播放列表中有很多歌曲。我希望用户能够填写一个表单来 create/edit 播放列表和 select 任意数量的歌曲。

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

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

是的,Laravel 支持 M:N 关系。在我看来,最简单的方法是创建一个 playlist_song table 并存储 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