DiscoveredReflection nenajde cudzi kluc

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

Zdravim,
mam nasledujuce konvencie na pomenovavanie primarnych a cudzich klucov:
nazov tabulky: prefix_tabulka1
primarny kluc: id_tabulka1
cudzi kluc: id_tabulka2

nazov tabulky: prefix_tabulka2
primarny kluc: id_tabulka2
nejaky atribut: meno

Cize primarny aj cudzi kluc je vzdy rovnaky, akurat bez pouzitia prefixu z tabulky. Chcem pouzit DiscoveredReflection triedu, avsak pri nasledujucom kode:

$res = $db->table('prefix_tabulka1');

foreach ($res as $r)
{
	echo $r->prefix_tabulka2->meno;
}

dostavam chybovu hlasku: No reference found for $prefix_table1->prefix_table2
Skusal som aj pouzit related(), no s rovnakou chybou. Co robim zle? Ako to ma byt spravne, resp. kde moze by chyba? Dakujem.

Editoval pogo (10. 8. 2012 9:47)

hrach
Člen | 1838
+
0
-

NDB neumi pracovat s prefixy, takze zrejme musis volat:

$db->table('prefix_tabulka1');

ne?

Editoval hrach (10. 8. 2012 7:09)

pogo
Člen | 29
+
0
-

Ospravedlnujem sa, samozrejme, nazvy tabuliek pouzivam aj s prefixami, uz som to v otazke opravil, zial nefunguje to ani takto.

Editoval pogo (10. 8. 2012 14:26)

pogo
Člen | 29
+
0
-

Tak uz som zistil, ze ked si dam vypisat v DiscoveredReflection premennu $structure, tak tato vazba sa nachadza v poli belongsTo a nie v hasMany, cize ked nazvy tabuliek vymenim, tak to ide. Ale ako to mozem vypisat v relacii belongs to?

hrach
Člen | 1838
+
0
-

dej sem dump.

pogo
Člen | 29
+
0
-

Uz som na to postupnym krokovanim a zistovanim ako to vsetko funguje prisiel a teda takto:
Bud pouzijem nejaky substring z nazvu kluca:

$res = $db->table('prefix_tabulka1');

foreach ($res as $r)
{
        echo $r->tabulka2->meno;
}

alebo aby to bolo citatelnejsie v kode (zachovany prefix), tak lepsie takto:

$res = $db->table('prefix_tabulka1');

foreach ($res as $r)
{
        echo $r->ref('prefix_tabulka2')->meno;
}