我正在制作一个字幕机器人:
电影有多个字幕(取决于质量和语言)
A系列有多个季节,多个剧集有多个字幕(与电影相同)
这些是我的表格(感谢DaveRandom):
问题是,据我所知,关联表用于多对多关系(如果我错了,请纠正我),我有点卡在这里,特别是对于Eloquent的belongsToMany方法:
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');
}
}
但问题是,A Subtitle属于ToOne Episode,而Episode可能有很多字幕。 我想知道如何使用关联表来表示这种结构。 或者我应该改变结构吗?
答案 0 :(得分: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');
}
}
希望它可以帮助他人。