Cizí klíče – nefunguje metoda ref()

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

Mam následující strukturu DB:

Schéma DB

Vyberu jeden řádek z tabulky posts:

$row = $db->table('posts')->limit(1)->fetch();

Pak třeba zkusim spočítat počet komentářů:

$row->related('comments')->count('*');

to funguje. Pak chci vytáhnout jméno kategorie, ke který patří muj post, udělam tedy:

$row->ref('categories')->name;
//nebo
$row->categories->name;

ale to vzápětí hodí:

PDOException

No reference found for $posts->categories.

Jak je to možný? Jedinně, že bych to blbě používal, ref() mi nefunguje na žádnou odkazovanou tabulku.

Editoval David Klouček (18. 8. 2012 23:30)

vvoody
Člen | 910
+
0
-

Ak doplníš druhý parameter, názov FK?

$row->ref('categories','categoryId')->name;

Ak premenuješ FK na category_id?

David Klouček
Člen | 57
+
0
-

vvoody napsal(a):

Ak doplníš druhý parameter, názov FK?

Tak to funguje, díky.

Ak premenuješ FK na category_id?

Já mam všechny sloupce pojmenovaný camelCase stylem.

castamir
Člen | 629
+
0
-

Mělo by ti fungovat i toto

$row->ref('categoryId')->name;

Editoval castamir (19. 8. 2012 9:27)

hrach
Člen | 1834
+
0
-

volani ref s jednim parametrem je stejna jako volani „property-like“ stylem a tato hodnota se interpertuje jako sloupec ve zdrojove tabulce. tedy

$row->category->name;
$row->ref('category')->name;