您需要以某种方式获得这些模型之间的关系
1)自动服务模型
2)大师模型
3)服务模型
这是我的数据透视表结构
id, auto_service_id, master_id, service_id
现在,我需要为每个AutoService获得其母版及其提供的服务。
一个Master可以属于许多AutoService,并在每个AutoService中提供不同的服务。
同一服务可以由多个主服务器在同一AutoService中提供。
如何在这些模型之间建立关系?
答案 0 :(得分:0)
您应该有一个数据透视表autoservice_service
。
在您的服务模型中
public function autoServices(){
$this->belongsToMany('App\AutoService');
}
在您的Master模型中
public function autoServices(){
$this->hasMany('App\AutoService');
}
在您的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')
。