Здравствуйте! Разбираюсь с Yii2 и что-то никак не могу толком понять как выбирать данные из 3-х таблиц в ActiveRecord
у меня к примеру 3 таблицы:
1. sotrudniki
2. rank
3. sotrRank
Создал 3 модели для каждой таблицы.
В модели Sotrudniki делаю связи:
public function getSotrrank()
{
return $this->hasMany(SotrRank::className(), ['sotr_code' => 'code']);
}
public function getRank(){
return $this->hasMany(RankList::className(), ['id' => 'rank_code'])->via('sotrrank');
}
В контроллере делаю выборку и передаю в вид:
public function actionSql()
{
$sotrudniki = Sotrudniki::find()->where(['code' => '70100001095'])->all();
return $this->render('sql', [
'sotrudniki' => $sotrudniki
]);
}
в виде вывожу:
/** @var \frontend\models\Sotrudniki $sotrudnik */
foreach ($sotrudniki as $sotrudnik){
echo '<h2>—отрудник - '.$sotrudnik->fam.'</h2><br/>' ;
foreach($sotrudnik->sotrrank as $sotrrank){
echo 'id - в св¤занной таблице - '.$sotrrank->id.' - '.$sotrrank->sotr_code.' - '.$sotrrank->rank_code.' - '.$sotrrank->date_start.' - '.$sotrrank->date_end.' - '.$sotrudnik->rank.'<br/>';
}
}
Информация из модели сотрудника выводится, а вот $sotrudnik->rank где должна быть должность сотрудника не выводится, в это свойство возвращается массив из всех должностей у которых совпадают id с rank_code.
Может еще нужно какое-то условие? или я не правильно вывожу..... не могу понять.