Spojování tabulek pomocí NotORM
- noximo
- Člen | 4
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
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ý :-)