Důvěra v nette Database a v propojování tabulek

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

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

vvoody
Člen | 910
+
0
-

V starších verziách nette sa tieto chyby vyskytovali. Ktorú verziu používaš ty?

iwory
Člen | 147
+
0
-

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. :)

Pavel Macháň
Člen | 282
+
0
-

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
+
0
-

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 :-/

Caine
Člen | 216
+
0
-

Zkus vypnout cache (nahradit FileStorage za MemoryStorage, nebo NullStorage):)

norbe
Backer | 408
+
0
-

Zkus aplikaci co nejvíce osekat, ale aby tam současně byla reprodokovatelná chyba a někam to nahraj (včetně schéma db).

Eda
Backer | 220
+
0
-

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)

iwory
Člen | 147
+
0
-

Asi mi nic jiného nezbyde :-/ Tedy alespoň dokud se bug nedá dohromady.

petr.pavel
Člen | 535
+
0
-

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.

iwory
Člen | 147
+
0
-

To by teoreticky mohlo pomoci. Táka se to sice třeba výpisu produktu ale každý produk potřebuje jiný data – tak by to mohlo být stejné.

Zkusím a dám vědět. Díky!

thunderbuff
Člen | 164
+
0
-

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


?>