OneToMany关系的关联表

时间:2017-04-21 21:44:33

标签: php database-design eloquent database-relations associative-table

我正在制作一个字幕机器人:

  • 电影有多个字幕(取决于质量和语言)

  • A系列有多个季节,多个剧集有多个字幕(与电影相同)

这些是我的表格(感谢DaveRandom):

enter image description here

问题是,据我所知,关联表用于多对多关系(如果我错了,请纠正我),我有点卡在这里,特别是对于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可能有很多字幕。 我想知道如何使用关联表来表示这种结构。 或者我应该改变结构吗?

1 个答案:

答案 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');
    }
}

希望它可以帮助他人。