Prapodivný backjoin, kvůli zvláštní tabulce na překlady vícejazyčnách sloupců

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

Dobrý den,
mám tabulky: article, article_translation, article_category, article_category_translation a user.

Vím jak bych vybral články, jejich překlady, autora a id kategorie („rubriky“). Nevím ovšem jak provést backjoin article_category na article_category_translation.

zkoušel jsem něco takového:

$db->table("article_translation")
->select("article.*, article_translation.*, article.user.name AS author,
article:article_category:article_category_translation:name AS category");

Bohužel se mi nedaří vysledovat dotaz, který to pokládá v sql. Když se zobrazí laděnka, tak mi nefungují queries v debugbaru.

Editoval danielseek (4. 4. 2013 23:01)

enumag
Člen | 2118
+
0
-

Nesnaž se tahat data z více tabulek v jednom selectu, to není NDB way. Použij raději metodu related.

EDIT: Důvody jsem částečně vysvětloval zde.

Editoval enumag (5. 4. 2013 0:06)

danielseek
Člen | 42
+
0
-

Potřebuju data pro grid a nechce se mi dělat milión callback funkcí, které by tohle ošetřovali, potřebuji řádková data…

Nicméně variantou je udělat callback jen pro tento vztah, jak by se to udělalo?
Stačilo by nahradit $row[„category“] za $row->related(„category_translation“, „category_id“)->fetch()?

Napadá vás nějaké rozumné řešení?

Editoval danielseek (5. 4. 2013 18:44)

David Matějka
Moderator | 6445
+
0
-

co tohle:
article.article_category:article_category_translation.name AS category

enumag
Člen | 2118
+
0
-

Potřebuju data pro grid a nechce se mi dělat milión callback funkcí, které by tohle ošetřovali, potřebuji řádková data…

Spíš potřebuješ datagrid s lepším API. ;-)

danielseek
Člen | 42
+
0
-

Ano, to funguje. Zkoušel jsem si vygenerovaný dotaz dát do admineru a vyhodil vše tak jak má. Nicméně grid mi vyhodil chybu (Nifty Grid):

Call to a member function getPrimary() on a non-object

u příkazu:

return $this->table->getPrimary();

Editoval danielseek (5. 4. 2013 19:19)

danielseek
Člen | 42
+
0
-

enumag
chápu na to je teď trochu pozdě… Tenhle data grid jsem nikde nenašel, nevěděl jsem že nový addonový portál už funguje?

enumag
Člen | 2118
+
0
-

@danielseek: Aha, to je škoda že už ho nemůžeš vyměnit. I pokud vyřešíš tenhle problém bojím se, že při kombinaci niftygridu a NDB nebyl poslední. :-( Funkční betaverzi nových addons najdeš zde.

danielseek
Člen | 42
+
0
-

S těch addonů co jsou tam k dispozici, byl nejpřijatelnější… Aspoň má metodu setRenderer, takže můžu změnit způsob načítání sloupce z db…

enumag
Člen | 2118
+
0
-

Jo ještě by tě mohl zajímat TwiGrid (ten není ani na starých ani na nových addons pokud vím).

danielseek
Člen | 42
+
0
-

TwiGrid díky moc za tip. Teď na něj koukám a asi ho do budocna nasadím. Prozíravě jsem si udělal kolem NiftyFridu vlastní obálku, která se mi mimojiné stará i o vytváření formulářů na základě těch informací z gridu, takže by to neměl být takový problém. Jsem teď ale v presu, takže to počká. Jestli se ale dostanu k nějakému neřešitelnému problému, možná sáhnu po tomto gridu.

Editoval danielseek (5. 4. 2013 21:07)