Полагаю, вы хотите следующее,
Для фильмов вам нужен список актеров и ролей.
Для актеров вам нужен список фильмов и ролей
Для ролей вам может потребоваться список актеров и фильмов
Так что в моей модели MovieCast
я бы добавил belongsTo()
отношение к каждой из этих моделей, так как это очень просто и понятно, я не буду добавлять пример, если вы не попросите об этом в комментариях.
Затем вы должны добавить это, поскольку у него нет первичного ключа:
/**
* primaryKey
*
* @var integer
* @access protected
*/
protected $primaryKey = null;
/**
* Indicates if the IDs are auto-incrementing.
*
* @var bool
*/
public $incrementing = false;
Затем в каждой из моих других моделей я бы добавил связь с моделью MovieCast, что-то вроде:
Модель фильма
public function casting(){
return hasMany('\App\MovieCast', 'movie_id', 'id');
}
Актерская модель
public function appears_on(){
return hasMany('\App\MovieCast', 'people_id', 'id');
}
Роли Модель
// Please replace my ridiculous name with something else
public function actors_and_movies_with_this_role(){
return hasMany('\App\MovieCast', 'role_id', 'id');
}
Затем, когда вы получаете доступ, например, к актеру, вы можете использовать что-то вроде:
foreach($actor->appears_on as $appearance){
echo $appearance->movie->name;
echo $appearance->role->name;
}