【发布时间】:2019-03-16 20:28:06
【问题描述】:
一张专辑可能有很多这样的艺术家release。
但一张专辑可能只有一位艺术家,例如this。
一个标签有很多专辑,例如this。
我对关系有点困惑,另一方面,一张专辑有很多曲目!我对一切都很困惑,因为另一边有一个标签(注册音乐的公司)表,标签有很多专辑!
我们将不胜感激。
【问题讨论】:
一张专辑可能有很多这样的艺术家release。
但一张专辑可能只有一位艺术家,例如this。
一个标签有很多专辑,例如this。
我对关系有点困惑,另一方面,一张专辑有很多曲目!我对一切都很困惑,因为另一边有一个标签(注册音乐的公司)表,标签有很多专辑!
我们将不胜感激。
【问题讨论】:
我建议使用以下架构:
如果album_has_artists rows > 1 => 显示“各种艺术家”。
【讨论】:
release 和release_has_tracks。另一种解决方案是将release_type 列添加到album 表中,如果专辑是单张专辑、EP 专辑或完整专辑,您可以在其中存储一个值。
我认为以下示例将帮助您了解专辑、艺术家、曲目和标签之间的关系。考虑下面给出的模型
class Label extends Model
{
public function Albums()
{
return $this->hasMany(Albums::class, 'album_id', 'id')->select('id') // select will contain whatever data you want from album );
}
}
class Albums extends Model
{
public function Artists()
{
return $this->hasMany(Artists::class, 'artist_id', 'id')->select('id') // select will contain whatever data you want from table artists);
}
public function Tracks()
{
return $this->hasMany(Tracks::class, 'track_id', 'id')->select('id') // select will contain whatever data you want from table tracks);
}
}
即使只有一张专辑有很多艺术家,它也会被考虑在 hasMany 关系中。
【讨论】: