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ší.