复杂的口才关系

时间:2019-03-25 06:54:45

标签: php laravel eloquent relationship

我有复杂的口才。

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");

2 个答案:

答案 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']
        );
    }
}