Norma pre pomenúvanie stĺpcov s cudzím kľúčom

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

Prečo musí byť nejakým spôsobom štandardizovaný názov stĺpca cudzieho kľúča podla odkazovanej tabuľky, keď má databázová vrstva k dispozícií informácie z information_schema?
Ako sú presne stanovené pravidlá pre názvy stĺpcov a tabuliek?

David Matějka
Moderator | 6445
+
0
-

pokud pouzivas innodb a discoveredreflection https://api.nette.org/…ion.php.html#18 tak si muzes sloupce pojmenovat jak chces

pokud pouzivas conventional reflection https://api.nette.org/…ion.php.html#18 tak si to muzes nastavit, defaultne je nazev toho sloupce nazev_tabulky_kam_odkazuje_id

Editoval matej21 (15. 11. 2012 1:05)

romiix.org
Člen | 343
+
0
-

Tak toto fakt nechápem.
Obdobne podla https://doc.nette.org/cs/database#…:

foreach ($database->table('container') as $container)
{
    echo $container->number, ' (', $container->user->shortcut, ')';
}

Toto mi vyhodí:

Nette\MemberAccessException
Cannot read an undeclared column "user".


DB dump: http://pastebin.com/27Z2sj0M

Kde robím chybu?

Nette 2.0.6

romiix.org
Člen | 343
+
0
-

Ehm, moja chyba.. V tomto prípade to skutočne funguje, ale ak nazvem stĺpec „user_id“ → „owner“ tak to padne s hore uvedenou chybou.
To by predsa nemalo keď používam DiscoveredReflection, nie?

enumag
Člen | 2118
+
0
-

Mělo by se to jmenovat owner_id a poté ti bude owner fungovat stejně jako dřívce user. Při discovered reflexi nezáleží na názvu cílové tabulky.