Появилась проблема.
Есть 3 таблицы Tests, Questions, Answers, которые связаны последовательно.
Вот картинку нашел для примера, но у меня связи 1-ко-многим.
Как мне в Yii2 сделать так, что бы одним запросом вывести данные из всех 3-х таблиц, с сохранением на выходе правильной иерархии (используя asArray())?
В модели Test прописал вот такой код, но это не правильно, судя по всему.
public function getQuestion()
{
return $this->hasMany(Question::className(), ['test_id' => 'id']);
}
public function getAnswer()
{
return $this->hasMany(Answer::className(), ['question_id' => 'id'])
->viaTable(Question::tableName(), ['test_id' => 'id']);
}
С 2-мя таблицами проблем нет. Запрос вида:
$test = Test::find()->asArray()->joinWith('question')->where(['tests.id'=>$id])->all();
выдает такой массив:
Array
(
[id] => 2
[name] => Тестовый тест №2
[question] => Array
(
[0] => Array
(
[id] => 1
[test_id] => 2
[question] => сколько будет 2+3?
)
[1] => Array
(
[id] => 3
[test_id] => 2
[question] => Столица России?
)
)
)
Я же хочу получить вот такой результат:
Array
(
[id] => 2
[name] => Тестовый тест №2
[question] => Array
(
[0] => Array
(
[id] => 1
[test_id] => 2
[question] => сколько будет 2+3?
[answer] => Array
(
[0] =>Array
(
[id] => 1
[question_id] => 1
[answer] => 4
[is_right_answer] => false
)
[1] =>Array
(
[id] => 2
[question_id] => 1
[answer] => 5
[is_right_answer] => true
)
[2] =>Array
(
[id] => 3
[question_id] => 1
[answer] => 6
[is_right_answer] => false
)
)
[1] => Array
(
[id] => 3
[test_id] => 2
[question] => Столица России?
[answer] => Array(...)
)
)
)