Я работаю над ботом субтитров, где:
Фильм имеет несколько субтитров (в зависимости от качества и языка)
Серия имеет несколько сезонов с несколькими эпизодами, которые имеют несколько субтитров (так же, как фильм)
Это мои таблицы (спасибо 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');
}
}
Но проблема в том, что Субтитры принадлежат Эпизоду Одного, тогда как Эпизод может иметь много субтитров.
Мне было интересно, как можно использовать ассоциативные таблицы для такой структуры.
Или я должен изменить структуру?
То, чего я пытался достичь, возможно с помощью полиморфных отношений,
Удаляются 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');
}
}
Надеюсь, что это помогает другим.
Других решений пока нет …