Provázání tabulek pomocí spojovací tabulky

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

Ahoj,
mám následující tabulky v databázi (pro zjednoduseni pisi jen dulezite sloupce):

<?php
Main(mainId)
Clanek (clanekId=MainId)
Katalog (katalogId=MainId)
Soubor (souborId, MainId)
?>

Tabulka Main slouží jen jako generátor klíčů, tak aby záznam v článku ani katalogu nikdy neměl stejné ID.
Tabulka Soubor poté uchovává soubory a odkazuje se na záznam v Clanek nebo Katalog přes Main.

Neexistuje tedy přímá vazba Soubor->Katalog nebo Soubor->Clanek, ale je to Soubor->Main<-Katalog, Soubor->Main<-Clanek.

A jde mi o to jak získat soubory ke Clanku (resp. katalogu) když není přímá vazba.
Protože toto nefunguje.

<?php
	$clanek = $this->db->table('polClanek');
	$clanek->Soubor->souborId;
?>

Ještě doplnění.
Tento dotaz

    $clanek->ref('Soubor','clanekId')

provede toto

SELECT `souborId`
FROM `Soubor`
WHERE (`souborId` IN (238737, 238739, 238742, 238724, 238726))

ale já potřebuji toto

SELECT `souborId`
FROM `Soubor`
WHERE (`mainId` IN (238737, 238739, 238742, 238724, 238726))

díky
Lukáš

Editoval konva (24. 1. 2014 17:54)

s4muel
Člen | 92
+
0
-

skus takto:

$clanek->ref('Main')->related('Soubor');
konva
Člen | 88
+
0
-

Když zkusím toto

$clanek->ref('Main', 'clanekId')->related('Soubor')

Tak vyhodí tuto chybu

htmlspecialchars() expects parameter 1 to be string, object given
Robyer
Člen | 74
+
0
-
{foreach $clanek->ref('Main', 'clanekId')->related('Soubor') as $soubor}
   {$soubor->sloupec}
{/foreach}

Editoval Robyer (24. 1. 2014 21:48)

konva
Člen | 88
+
0
-

Zrovna mi to doslo. Blbec sem v sablone pouzil DUMP pro vypsani toho pole …
Samozrejme to funguje.
Moc diky
Lukas