Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一元关系的关联表_Php_Database Design_Eloquent_Database Relations_Associative Table - Fatal编程技术网

Php 一元关系的关联表

Php 一元关系的关联表,php,database-design,eloquent,database-relations,associative-table,Php,Database Design,Eloquent,Database Relations,Associative Table,我正在开发一个字幕机器人,其中: 一部电影有多个字幕(取决于质量和语言) 一部连续剧有多季,多集有多个字幕(与电影相同) 这些是我的桌子(感谢): 问题是,据我所知,关联表适用于多对多关系(如果我错了,请纠正我),我有点被困在这里,尤其是使用Eloquent的belongsToMany方法: class Subtitle extends Model { public $guarded = []; public $timestamps = false; publi

我正在开发一个字幕机器人,其中:

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

  • 一部连续剧有多季,多集有多个字幕(与电影相同)

这些是我的桌子(感谢):

问题是,据我所知,关联表适用于多对多关系(如果我错了,请纠正我),我有点被困在这里,尤其是使用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');
    }
}
但问题是,一个字幕属于一集,而一集可能有很多字幕。 我想知道如何使用关联表进行这种结构。
或者我应该改变结构吗?

所以我试图通过多态关系实现的目标是可能的, 删除2个关联表,并将2个字段添加到字幕表中: 例如:父项类型、父项id

然后我可以使用:

字幕:

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

    public function Parent()
    {
        return $this->morphTo();
    }
}
系列节目:

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

希望它能帮助其他人。

@Barmar有很多关系,但目前的结构无法实现这一点。因为插曲和电影不在同一张桌子上。或者我把概念搞错了,我对数据库一窍不通