through() hleda jiny sloupec nez je zadan

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

Zdravim, prikaz

$row->related("slunecni_energie")->through("podsekce_id")->count('*')

mi vraci sql

SELECT COUNT(*), `podsekce_id`
FROM `slunecni_energie`
WHERE (`slunecni_energie`.`slunecni_energie_podsekce_id` IN (2))
GROUP BY `podsekce_id`

Prikladam kod, ze ktereho by melo byt zrejme jak funguje a co potrebuji:

	<tr n:foreach="$items as $row"{if $iterator->isEven()} class="even"{/if}>
		<td>{$row->title}</td>
		<td>{$row->related("slunecni_energie")->through("podsekce_id")->count('*')}</td>
		<td class="i"><a n:href="editSection, $row->id">editovat</a></td>
		<td class="i"><a n:href="deleteSection! $row->id" data-confirm="Skutečne smazat?">smazat</a></td>
	</tr>

potrebuji ale aby v podmince misto sloupce slunecni_energie.slunecni_energie_podsekce_id byl sloupec slunecni_energie.podsekce_id a nedari se mi toho nijak docilit, zkousel jsem ruzne kombinace… Dale je divne, ze sloupec je chybne uveden pouze u podminky, ale u selectu a group by je ve spravnem tvaru.

Prikaz bez ->through(„podsekce_id“) mi vraci toto:

SELECT COUNT(*), `slunecni_energie_podsekce_id`
FROM `slunecni_energie`
WHERE (`slunecni_energie`.`slunecni_energie_podsekce_id` IN (2))
GROUP BY `slunecni_energie_podsekce_id`

Materska tabulka se jmenuje slunecni_energie_podsekce a potomci se nachazeji v tabulce slunecni_energie, mozna je chyba ve spatne konvenci nazvu tabulek?

Resenim muze byt samozrejme prejmenovani sloupce a dal to neresit, ale zajima me kde delam chybu.

Editoval Lexi (9. 2. 2012 15:14)

hrach
Člen | 1838
+
0
-

Jakou mas verzi nette? Mne to fuguje. Aktualni syntaxe je ovsem jina, ackoliv ta stara stale fugnuje.

<td>{$row->related("slunecni_energie.podsekce_id")->count('*')}</td>
<!-- alternativne -->
<td>{$row->related("slunecni_energie", "podsekce_id")->count('*')}</td>

Editoval hrach (10. 2. 2012 12:36)

Jan Mikeš
Člen | 771
+
0
-

Trosku starsi, 2.0-dev released on 2011–10–11

kazdopadne tuto syntax jsem zkousel taky, nasel jsem si ji v api, oboji mi vyplivlo stejny sql dotaz. Pokud ti to funguje tak je tedy mozne ze je to verzi

Tvuj vysledny sql vypada takto?

SELECT COUNT(*), `podsekce_id`
FROM `slunecni_energie`
WHERE (`slunecni_energie`.`podsekce_id` IN (2))
GROUP BY `podsekce_id`
hrach
Člen | 1838
+
0
-

Tak to skoro urcite bude ve verzi, honem to koukej updatnout :)
Muj vysledny dotaz vypada jinak, protoze sem to zkousel na testovaci db.