【发布时间】:2021-07-25 01:40:28
【问题描述】:
我有 3 个模特:电影、名人、角色。每部电影都有很多名人,每个名人在很多电影中都有很多角色(例如电影“黄飞鸿”有名人“昆汀·塔伦蒂诺”作为角色[“导演”、“作家”],显然“昆汀·塔伦蒂诺”可以让其他电影扮演不同的角色。
在这 3 个模型之间实现多对多关系的最佳方式是什么,我们可以轻松地直接访问每部电影的工作人员(如 $movie->$roles->director)
我们是否应该使用movie_id, celebrity_id, role_id 和主键(movie_id、celebrity_id、role_id)定义一个数据透视表?
class Movie extends Model{
public function movieCelebrityRole()
{
return $this->hasMany(MovieCelebrityRole::class);
}
}
class Celebrity extends Model{
public function movieCelebrityRole()
{
return $this->hasMany(MovieCelebrityRole::class);
}
}
class Role extends Model{
public function userRoleCompany()
{
return $this->hasMany(MovieCelebrityRole::class);
}
}
class MovieCelebrityRole extends Model{
public function movie()
{
return $this->belongsTo(Movie::class);
}
public function celebrity()
{
return $this->belongsTo(Celebrity::class);
}
public function role()
{
return $this->belongsTo(Role::class);
}
}
【问题讨论】:
标签: php laravel eloquent model many-to-many