У вас должна быть одна сводная таблица autoservice_service
.
В ваших сервисных моделях
public function autoServices(){
$this->belongsToMany('App\AutoService');
}
В вашей мастер-модели
public function autoServices(){
$this->hasMany('App\AutoService');
}
В вашей модели автосервиса
public function services(){
$this->belongsToMany('App\Service');
}
public function masters(){
$this->belongsTo('App\Master');
}
в сводных таблицах используйте затем service_id
, master_id
, autoservice_id
. Если вы хотите использовать метки времени, используйте метод withTimestamps()
(например, $this->belongsToMany('App\Master')->withTimestamps();
РЕДАКТИРОВАТЬ: если вы хотите установить связь между Мастером и Сервисом, в которой один Мастер может иметь несколько сервисов и наоборот, вы должны сделатьдругая сводная таблица master_service
. В Service
модели:
public function masters(){
return $this->belongsToMany('App\Master');
}
и в Master
модели:
public function services(){
return $this->belongsToMany('App\Service');
}
теперь вы можете проверить, что делает мастер, примеры
1) Services of master
App\Master::find($id)->services();
2) Which masters do service
App\Service::find($id)->masters();
Другим обходным решением является добавление еще одного внешнего ключа в сводную таблицу, а затем использование ->withPivot('column1', 'column2')
.
.