Nette\Database problém s keší při related

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

Už jsem z funkce related na prášky. V Nette 2.0.4 jsem narazil na problém zanořených related, po dlouhé době a přepisování jsem zjistil, že chyba není na mé straně, ale bug Nette. Aktualizoval jsem na 2.0.5 data vrací, paráda.. Do chvíle než jsem zjistil, že šahám-li na dvou místech na stejná data přes related, pravděpodobně se to špatně kešuje.

Jedno načtení:

foreach ($t->related('tabulka') as $row) {
  $form['cont'][$i++]->setValues($row);

V jiném presenteru:

foreach($t->related('tabulka') as $row) {
  $tabulka2 = $row->tabulka2;

Při přístupu na jeden presenter je vše v pořádku (i opakovaně). Pokud ovšem navštívím druhý, který se také načte správně, a vrátím se na první: Warning: Illegal offset type. Chyba na té druhé řádce v ukázce. Tatáž chyba se nyní objeví i na druhém presenteru (nejde ani jeden). Vymažu-li keš, jsem opět na začátku. 1.-2.-1.-warning

Nevěděl by prosím někdo co s tím, značně mě začíná tlačit termín a s tímto nemohu hnout.

Nette: 2.0.5 stabilní
PHP: 5.3

hrach
Člen | 1834
+
0
-

Chtelo by to kompletni usecase – tedy dump db, a i projektu. Neslo by to nejak osekat?

Lukáš Kadlec
Člen | 17
+
0
-

Tak se mi konečně podařilo vyseparovat část projektu, která zlobí. Zde je sandbox
Dump i se schematem DB je v /sandbox/sql

Chyba se projeví v případě, že se nejdříve navštíví „/sandbox/www/admin/tests/edit“ a poté „/sandbox/www/student/test/run“. V opačném pořadí vše funguje jak má (i opakovaně). V pořadí edit → run nastane warning, který zmizí po promazání keše.

hrach
Člen | 1834
+
0
-

Uzasne, diky, mrknu na to.