Plnění zanořených kontejnerů

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Lukáš Kadlec
Člen | 17
+
0
-

Zdravím,
potřebuji naplnit editační formulář daty z databáze. Ve formuláři mám tři zanořené kontejnery. Plnění:

$evaluation = $this->context->createEvaluations()->get($id);
$form->setValues($evaluation);
$g = 0;
foreach ($evaluation->related('evaluation_group') as $group) {
  $form['groups'][$g]->setValues($group);
  $q = 0;
  foreach ($group->related('evaluation_question') as $question) {
    $form['groups'][$g]['rating'][$q]->setValues($question);
    $o = 0;
    foreach ($question->related('evaluation_option') as $option) {
      $form['groups'][$g]['rating'][$q]['rate'][$o++]->setValues($option);
    }
    $q++;
  }
  $g++;
}

První i druhý kontejner je naplněn v pořádku. Třetí foreach naplní form daty pouze při prvním průchodu prvního foreach-e. Co je špatně? Generované SQL:

SELECT * FROM `evaluation` WHERE (`id` = ?)

SELECT * FROM `evaluation_group` WHERE (`evaluation_group`.`evaluation_id` IN (3))

SELECT * FROM `evaluation_question` WHERE (`evaluation_question`.`evaluation_group_id` IN (6, 9, 10))

SELECT * FROM `evaluation_option` WHERE (`evaluation_option`.`evaluation_question_id` IN (23, 27, 28))

SELECT * FROM `evaluation_option` WHERE (`evaluation_option`.`evaluation_question_id` IN (NULL))

(Co tam dělá ten poslední SELECT?)

Lukáš Kadlec
Člen | 17
+
0
-

Tak po dvou dnech vyřešeno, díky za tip zarubik

Kdyby někdo řešil obdobný problém, stačí aktuální Nette 2.0.5, který tento bug řeší.