ассоциативная таблица для отношения OneToMany

Я работаю над ботом субтитров, где:

  • Фильм имеет несколько субтитров (в зависимости от качества и языка)

  • Серия имеет несколько сезонов с несколькими эпизодами, которые имеют несколько субтитров (так же, как фильм)

Это мои таблицы (спасибо DaveRandom):

введите описание изображения здесь

Проблема в том, что, насколько я знаю, ассоциативные таблицы предназначены для отношений «многие ко многим» (поправьте меня, если я ошибаюсь), я немного застрял здесь, особенно в методе Eloquent StoreToMany:

class Subtitle extends Model {
public $guarded = [];
public $timestamps = false;public function SeriesEpisodes()
{
return $this->belongsToMany('SeriesEpisode', null, null, 'series_episodes_subtitle');
}public function Movie()
{
return $this->belongsToMany('Movie');
}
}

Но проблема в том, что Субтитры принадлежат Эпизоду Одного, тогда как Эпизод может иметь много субтитров.
Мне было интересно, как можно использовать ассоциативные таблицы для такой структуры.
Или я должен изменить структуру?

0

Решение

То, чего я пытался достичь, возможно с помощью полиморфных отношений,
Удаляются 2 ассоциативные таблицы и вместо них в таблицу субтитров добавляются 2 поля:
например: parent_type, parent_id

тогда я могу использовать:

субтитры:

class Subtitle extends Model {
public $guarded = [];
public $timestamps = false;

public function Parent()
{
return $this->morphTo();
}
}

series_episodes:

class SeriesEpisode extends Model {
public $timestamps = false;
public $guarded = [];
public function Subtitles()
{
return $this->morphMany('Subtitle', 'Owner');
}
}

фильмы:

class Movie extends Model {
public $timestamps = false;
public $guarded = [];
public function Subtitles()
{
return $this->morphMany('Subtitle', 'Owner');
}
}

Надеюсь, что это помогает другим.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]