Důvěra v nette Database a v propojování tabulek
- iwory
- Člen | 147
Zdravím, na jednu stranu je database výborná věc a hrozně mi usnadnila
práci – hlavně s psanim JOINU :-D
Nicméně se setkávám se situací, kdy mi nějaký výpis funguje a nebo
nefunguje.
Repektivě:
$row->other_table->column
nebo
$row->related('connection_table')->column
Vypise data, které má úplně v pořádku. Ale třeba druhý den přijdu na tu samou stránku a hodí mi chybu že třeba nenašel žádný primární klíč, nebo že přistupuji k sloupci, který neexistuje.
Stačí jednou nebo dvakrát reloadnout a data se v pořádku načtou.
Nezdá se mi to jako normální chování.
FK jsou všeude v pořádku a v návrhu by neměl být určitě problém.
Dělám něco globálně špatně?
Díky
- Pavel Macháň
- Člen | 282
iwory napsal(a):
vvoody napsal(a):
V starších verziách nette sa tieto chyby vyskytovali. Ktorú verziu používaš ty?
Právě že Nette 2.1.0 RC4 – Relased z 19.12. :)
Updatni to na 2.1 stable
- iwory
- Člen | 147
EIFEL napsal(a):
iwory napsal(a):
vvoody napsal(a):
V starších verziách nette sa tieto chyby vyskytovali. Ktorú verziu používaš ty?
Právě že Nette 2.1.0 RC4 – Relased z 19.12. :)
Updatni to na 2.1 stable
Bohužel nepomohlo, někdy prostě spadně a když reloadnu, tak je to v pohodě. Jakmile smažudb cache, tak znova chyba :-/
- Eda
- Backer | 220
Taky mám ten problém (jedu na defaultu, takže opravené to ještě není).
U mne se to projevuje tím, že při každém cca třetím načtení stránky
se špatně natáhnou kolonky z navázané tabulky a tím pádem dojde
k chybě access property on non-object
. Dočasně to řeším
vypnutím cache v configu:
services:
nette.database.default.context: \Nette\Database\Context(..., Nette\Database\Reflection\DiscoveredReflection(...), Nette\Caching\Storages\DevNullStorage() )
Ale někdy si budu muset najít čas na vyseparování toho bugu, aby se to mohlo seriózně nahlásit a opravit. Vypnutí cache není dlouhodobé řešení…
Editoval Eda (8. 2. 2014 1:14)
- petr.pavel
- Člen | 535
Mě se tohle dělo v NotORM (z něj NDB vychází), když jsem přistupoval pod různými uživateli. Cache se vytvořila pod uživatelem A, který potřeboval jen některé sloupce. Uživatel B pak použil tu samou cache, ale potřeboval nějaký nový sloupec, na kterém to spadlo. To ovšem nebyla chyba NotORM, ale mého využívání cache. Řešením bylo přesunout cache do session. Třeba je to i váš případ.
- thunderbuff
- Člen | 164
Nebo zkuste tohle, sice to vybere i nepotřebné sloupce, ale nemusíte řešit žádné fígle s keší:
<?php
$row->other_table->select('*')->column
$row->related('connection_table')->select('*')->column
?>