我有复杂的口才。
company
-id
-name
company_courts
-id
-company_id
-name
company_sports
-company_court_id
-sports_id
sports
-id
-name
公司可以拥有许多法院。 法院可以进行许多运动
我想将所有体育项目归入一家公司
我尝试使用hasManyThrough解决此问题,但是没有用。
return $this->hasManyThrough(Sports::class,CompanyCourts::class,"","","id","id");
答案 0 :(得分:0)
尝试以下查询
Sport::whereHas('companySport', function($query) use ($yourCompanyId){
$query->has('companyCourt'. function($q) use ($yourCompanyId){
$q->has('company', function($q2) use ($yourCompanyId){
$q2->where('company_id', $yourCompanyId)
})
})
})
答案 1 :(得分:0)
Laravel不支持直接关系。
我已经为以下情况创建了一个程序包:https://github.com/staudenmeir/eloquent-has-many-deep
class Company extends Model
{
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
public function sports()
{
return $this->hasManyDeep(
Sports::class, [CompanyCourts::class, 'company_sports'],
[null, 'company_court_id']
);
}
}