HDApache
@HDApache
PHP программист

Как организовать связь через 2 таблицы в YII2?

есть 3 модели:
1. User
2. Organization
3. Terminal

User и Organization связанны через таблицу l_user_organization
Соответственно в User связь описана так
public function getRelOrganizations()
{
return $this->hasMany(Organization::className(), ['id' => 'organization_id'])->viaTable('{{%l_user_organization}}', ['user_id' => 'id'])->orderBy(['name_ru'=>SORT_ASC]);
}

А в Organization связь к Terminal:
public function getRelTerminals()
{
return $this->hasMany(Terminal::className(), ['organization_id' => 'id'])->orderBy(['name'=>SORT_ASC]);;
}


Как теперь описать связь от User к Terminal через Organization?

Я знаю что можно получить доступ к свойствам Terminal так:
foreach(User::find()->where(['id'=>1])->one()->relOrganizations AS $organization) {
print_r($organization->relTerminals);
}


Но нужно бы так:
print_r(User::find()->where(['id'=>1])->one()->relTerminals);


И еще попутный вопрос как данные из связи получить как массив, так не работает:
User::find()->where(['id'=>1])->one()->getRelOrganizations()->asArray();
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы