Spojování tabulek pomocí NotORM

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

Ahoj,
používám Nette (2.0.2) s NotORM (aktuální verze z githubu) a nedaří se mi přijít na to, jak používat správně tečkovou konvenci pro spojování tabulek. Pro vyhledávání spojení využívám NotORM_Structure_Discovery.

Mám následující jednoduchý problém (převedený na ukázkovou databázi): Chci vybrat všechny aplikace, které mají určitý tag, přičemž id tagu znám.
Následující kód funguje správně, ale využije dva dotazy:

<?php
$aplication_tags = $this->db()->aplication_tag( "tag_id", $id )->select( "aplication_id" );
$aplications = $this->db()->aplication( "id", $aplication_tags );
?>

Jde to nějak přepsat tak, aby se použil jen jeden dotaz? Napadlo mě například:

<?php
$aplications = $this->db()->aplication_tag->select( "aplication.*, aplication_tag.tag_id" )->where( array( "aplication_tag.tag_id" => $id ) );
?>

Ale to mi skončí chybou v souboru notorm Structure.php na řádku 189 (proměnná $column je prázdná i když předchozí příkaz najde správně cizí klíče)

Zapisovat to pomocí dvou příkazů/selectů by mi vyloženě nevadilo, ale raději bych to dělal správněji pokud je to možné…

nanuqcz
Člen | 822
+
0
-

Ahoj, nejsem si úplně jistý (tohle mi přijde vždycky trochu matoucí), ale za názvy tabulek, které jsou k předchozí tabulce v relaci N:1, se myslím píše dvojtečka. Takže by to mělo jít nějak takhle

$aplications = $this->db()->aplication->select("*")->where("aplication_tag:tag_id", $id);

Jestli jsem to spletl, tak se omlouvám, a snad poradí někdo jiný :-)