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

问题描述:

我是laravel的新手,之前我从未模拟过播放列表类型的实体,因此我正在寻找最佳做法和指导。在laravel中创建播放列表 - 将许多外键与一条记录关联?

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

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

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

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

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

您可以使用attach,detachsync方法来控制外部关系。为了便于理解,我做了一个例子:

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雄辩,请检查http://laravel.com/docs/4.2/eloquent

+0

非常有帮助。谢谢佩德罗!我已经把它作为一个概念的证明,并且很好地工作。然而,现在我需要找出一个很好的方法来创建表单元素来添加歌曲!现在我只需在文本字段中输入id。谢谢! – Rapture 2015-02-06 15:18:15