在 laravel 中创建播放列表 - 将许多外键与一条记录相关联?
Creating a playlist in laravel - associating many foreign keys with one record?
我是 laravel 的新手,我以前从未为播放列表类型的实体建模,所以我正在寻找最佳实践和指导。
我有两个模型 song 和 playlist。
播放列表中有很多歌曲。我希望用户能够填写一个表单来 create/edit 播放列表和 select 任意数量的歌曲。
最好的方法是什么?有没有办法将一个 ID 数组存储为歌曲 table 的外键?或者这应该总是写出许多行到映射 table?
laravel或eloquent有没有办法辅助这种模型的CRUD?最佳做法是什么?
是的,Laravel 支持 M:N 关系。在我看来,最简单的方法是创建一个 playlist_song
table 并存储 song
和 playlist
.
之间的所有关系
您可以使用attach
、detach
和sync
方法来控制对外关系。为了方便理解,我打了个例子:
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
我是 laravel 的新手,我以前从未为播放列表类型的实体建模,所以我正在寻找最佳实践和指导。
我有两个模型 song 和 playlist。
播放列表中有很多歌曲。我希望用户能够填写一个表单来 create/edit 播放列表和 select 任意数量的歌曲。
最好的方法是什么?有没有办法将一个 ID 数组存储为歌曲 table 的外键?或者这应该总是写出许多行到映射 table?
laravel或eloquent有没有办法辅助这种模型的CRUD?最佳做法是什么?
是的,Laravel 支持 M:N 关系。在我看来,最简单的方法是创建一个 playlist_song
table 并存储 song
和 playlist
.
您可以使用attach
、detach
和sync
方法来控制对外关系。为了方便理解,我打了个例子:
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