Совет для Отношения между Альбомом, Исполнителем, Следом и Лейблом (музыка) - PullRequest
0 голосов
/ 11 октября 2018

В альбоме может быть много исполнителей, таких как release .

Но в альбоме может быть только один исполнитель, такой как this .

A Labelу меня много альбомов, таких как this .

Меня немного смущают отношения, с другой стороны, в альбоме много треков!Я запутался во всем, потому что на другой стороне есть стол Label (компания для регистрации музыки), а у Label много альбомов!

Буду признателен за некоторые советы.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Я думаю, что следующий пример поможет вам понять взаимосвязь между альбомом, исполнителем, дорожкой и надписью. Рассмотрите приведенные ниже модели

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.

0 голосов
/ 11 октября 2018

Я бы предложил использовать следующую схему:

Artist

  • id
  • name

album

  • id
  • имя

метка

  • id
  • имя

дорожка

  • id
  • name
  • длина

album_has_artists

  • id
  • album_id
  • artist_id

label_has_albums

  • id
  • label_id
  • album_id

album_has_tracks

  • id
  • album_id
  • track_id

А если album_has_artists rows > 1 => показать «Разные исполнители».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...