[英]Laravel Eloquent orderBy() parent table field in a One to Many Relationship
[英]One To Many Relationship in Eloquent with JSON field
我正在尝试在数据库中的JSON字段和通过ID存储音乐的表之间创建连接。 因此,我有一个名为“播放列表”的表,该表具有一个名为“歌曲”的字段。 在此“歌曲”字段中,我具有歌曲ID的array[]
,例如[1,2]
。 我尝试使用以下代码在这两个表之间建立关系:
class Playlist extends Model
{
protected $table = 'playlists';
public function songs()
{
return $this->hasMany('App\Music', 'id');
}
}
我使用foreign_key
id是因为songs表具有一个id字段。
我用来从控制器检索播放列表的代码如下:
$playlist = Playlist::find($id)->songs;
print_r($playlist);
输出: [1,2]
我很可能做错了事,没有正确理解关系。 有人可以解释这是如何工作的吗? 我查阅了文档,但没有任何明智的选择。
我有一个很好的解决方案,可以将数据保留在json格式的列中。 它可以帮助我在以前的项目网上商店
Laravel没有对JSON关系的本地支持。
我为此创建了一个包: https : //github.com/staudenmeir/eloquent-json-relations
如果将“ songs
列重命名为song_ids
,则可以这样定义多对多关系:
class Playlist extends Model
{
use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
protected $casts = [
'song_ids' => 'json',
];
public function songs()
{
return $this->belongsToJson('App\Music', 'song_ids');
}
}
class Music extends Model
{
use \Staudenmeir\EloquentJsonRelations\HasJsonRelationships;
public function playlists()
{
return $this->hasManyJson('App\Playlist', 'song_ids');
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.