2016-11-08 5 views
2

таблицы:Laravel красноречивых отношения третьего уровень

divisions 
    id  name 

districts 
    id  division_id   name 

subdistricts 
    id  district_id   name 


class Division extends Model 
{ 
    // 
    public function districts() 
    { 
     return $this->hasMany('App\District', 'division_id'); 
    } 

    public function subdistricts() 
    { 
     // what will be here 
    } 

} 

возможно получить подпровинции от division_id без использования division_id на подпровинциях таблицы

ответ

2

Читайте о hasManyThrough() отношения. Так, subdisctricts() будет выглядеть следующим образом:

public function subdisctricts() 
{ 
    return $this->hasManyThrough('App\SubDistrict', 'App\District'); 
} 
-1

Вы можете попробовать hasManyThrough() как:

public function subdistricts() 
{ 
    return $this->hasManyThrough('App\Subdistrict', 'App\District'); 
} 

has-many-through отношения обеспечивает удобный укороченные для доступа удаленных отношений через промежуточное положение.

0

Вы можете использовать hasManyThrough() в соответствии с рекомендациями, синтаксис hasManyThrough является:

class Division extends Model 
{ 
    public function posts() 
    { 
     return $this->hasManyThrough(
      'App\Subdistrict', 'App\District', 
      'country_id', 'user_id', 'id' 
     ); 
    } 
} 

Третий аргумент является именем foreign key on the intermediate model, четвертый аргумент имя foreign key on the final model, а пятый аргумент является local key - See Docs

0

Для этого необходимо использовать hasManyThrough.

public function subdisctricts() 
{ 
    return $this->hasManyThrough('App\Subdistrict', 'App\District'); 
} 
Смежные вопросы