Nette\Database problém s keší při related
- Lukáš Kadlec
- Člen | 17
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
- Lukáš Kadlec
- Člen | 17
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.