Nette\Database – problém s nejednoznačnou kolonkou

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

Zdravím.

Tentokrát jsem narazil na následující nepříjemnost.

Uvažujme schéma:

A následující kód:

$d = $db->table('vozy_dopravci')
	->where('nazevdopravce.nazev', 'ČSAD Horní Kotěhůlky')
	->count('poradi'); // jde mi o groupnutí kolonky poradi v tabulce vozy_dopravci

Skončí chybou 1052 Column 'poradi' in field list is ambiguous. Stejná chyba nastane i u pokud v podobné situaci použiji funkci group().

Později jsem zjistil, že by to šlo obejít explicitním určením tabulky (mateřské):

$d = $db->table('vozy_dopravci')
	->where('nazevdopravce.nazev', 'ČSAD Horní Kotěhůlky')
	->count('vozy_dopravci.poradi');

Nebylo by lepší, kdyby Nette\Database automaticky bralo v úvahu, že sloupce, které nemají explicitně určenou tabulku, jsou z tabulky mateřské? Vždyť u where to tak už funguje. API by pak podle mě bylo konzistentnější a pro nováčky pochopitelnější.

Používám Nette 2.0.5.

Editoval Eda (21. 9. 2012 14:09)

jtousek
Člen | 951
+
0
-

Ne, to by lepší zcela určitě nebylo. Šlo by o ne úplně předvídatelnou magii a kdo by o tomto chování nevěděl, mohlo by mu to vzít jiný sloupec než chtěl. Takhle je nucen říct přesně co chce jakmile existuje více než 1 možnost, což je mnohem lepší.

Eda
Backer | 220
+
0
-

Systém:
bez explicitně uvedené tabulky = mateřská tabulka
s uvedenou tabulkou = jiná
mi přijde dost čitelný.

Takto se bude stávat, že u některých kolonek z mateřské tabulky budu muset zdrojovou tabulku uvádět a u jiných ne, což mi přijde mnohem víc matoucí…

hrach
Člen | 1838
+
0
-

hm, asi by se to mohlo fixnout, ale velkej problem v tom nevidim :)