NDB – Discovered reflection a modified data
- Ivorius
- Nette Blogger | 119
Když si proiteruju Selection a do ActiveRow si přidám vlastní prvek (např. objekt price, který mi provádí nějaké výpočty) , tak mi potom občas při prvním požadavku na ten price vyhodí
PDOException
No reference found for $products->price
Jakmile dám ctrl+f5, tak to už funguje.
Používám novou verzi z github nette a Discovered reflection.
- frosty22
- Člen | 373
Myslím si, že to je cachí vybraných sloupců – jelikož pokud explicitně nenastavíš, přes metodu select, jaké sloupce se mají vybrat z databáze, tak on při nové query vybere vše, ale následně už vybere jen ty, které jsi použil, a takto si query nacachuje, pokud však upravíš query, tak použije z cache ony sloupce, ale zjistí, že jsi navíc použil „price“, takže přidá ještě do výběru „price“ a při dalším spuštěním je to OK.
- enumag
- Člen | 2118
Už jsem před nějakou dobou tenhle problém bez odezvy reportoval. Problém je prostě v tom, že ActiveRow dovolí manipulaci pouze s reálně vybranými sloupci a ne s těmi, které se tam objevit „mohou“, protože jsou v db.
Mohlo by ti pomoct přidání $row->price;
, aby se selection
na daný sloupec vždy podívalo, nic s ním neudělalo, ale při dalších
dotazech už ho vracelo. Je to sice hack, ale lepší řešení neznám. Jo a
nezapomeň smazat cache.