嗨,我有三张桌子
组织
id | name
1 | org1
2 | org2
地点
id | name | organisation_id
1 | site1 | 1
2 | site2 | 1
3 | site3 | 2
服务
id | name | site_id
1 | service1 | 1
2 | service2 | 1
3 | service2 | 2
在这里,我想获得组织的所有服务(假设1)。我可以像这样获得组织的所有站点,但是我如何获得服务:
$sites = Site::whereHas('organisation', function ($query) {
$query->where('id', 1);
})->get();
模型
组织模型
public function sites() {
return $this->hasMany('App\Site');
}
siteModel
public function organisation(){
return $this->belongsTo('App\Organisation');
}
public function services() {
return $this->hasMany('App\Service');
}
serviceModel
public function site(){
return $this->belongsTo('App\Site');
}
您可以通过“有很多经历”获得类似的关系:
模特组织:
public function services()
{
return $this->hasManyThrough(Service::class, Site::class, 'organisation_id', 'site_id', 'id');
}
得到:
$services = Organisation::find(1)->services;
或者,您可以嵌套 whereHas获得所有服务:
$services = Service::whereHas('site.organisation', function ($query) {
$query->where('organisation.id', 1);
})->get();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句