Mozny bug v Nette 2.3.3 Nette\Database

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

Mam tuto konstrukci:

            $this->sestavapravidlo = $sestava->related('sestavapravidlo', 'sestava'); //$sestava je Table\ActiveRow
            foreach ($this->sestavapravidlo AS $sp) {
                if ($sp->sestavazmenasituace_id == $sestavazmenasituace_id
                        AND $sp->situaceStav == $situaceStav
                        AND $sp->rozsahGoluOd <= abs($aktualniStav)
                        AND $sp->rozsahGoluDo >= abs($aktualniStav)
                        AND $sp->situaceTretina + 1 == $this->utkaniPrubeh->getTretina()) {
                    $this->pravidlo[$this->utkaniPrubeh->getTretina()][$sestavazmenasituace_id] = $sp;
                }
            }

			//dale nekde v kodu
			$this->pravidlo[$this->utkaniPrubeh->getTretina()][$sestavazmenasituace_id]->brankarPozice;

Pri urcite konstelaci se spatne udela cache a ikdyz pole je typu Table\Selection tak atribut brankarPozice neni nalezena. Pri prvnim pruchodu se podle konstelace podminek udela select, ktery neobsahuje dany sloupec.
Nesouvisi to nejak s timto: https://github.com/…se/issues/15
V Nette 2.2.9 to funguje bez problemu.

Editoval saimons (25. 6. 2015 10:01)

llook
Člen | 407
+
+1
-

V minulosti jsem podobné chování řešil vypnutím keše a poučením, že pro příští projekt radši použiju něco jiného.

Mysteria
Člen | 797
+
0
-

Tohle se mi už hodně dlouho dobu nestalo, ale předtím jsem to řešil přidáním ->select(‚*‘), pak to šlo v pořádku.