propojeni tabulek pres vice related

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

Ahoj,
potřeboval bych poradit jak na vícenásobné spojení přes related.
Mám tři tabulky

create table kategorie
(
   id                 int not null auto_increment,
   nazev              varchar(100),
   primary key (id)
);

create table tema
(
   id                 int not null auto_increment,
   kategorieId
   nazev              varchar(100),
   primary key (id)
);

create table polozka
(
   id                 int not null auto_increment,
   temaId
   nazev              varchar(100),
   primary key (id)
);

kdy tabulka „polozka“ ma rodice v tabulce „tema“ a ta ma rodice v tabulce „kategorie“

v sablone si vypisuji jednotlive kategorie

<section n:foreach="$kategorie as $kat">
</section>

a chci znat pocet temat k dane kategorii a pocet polozek k dane kategorii.
Pocet temat je jednoduchy

$kat->related('tema')->count('*')

ale nemuzu prijit na to jak ziskat ten pocet polozek.

Diky

konva
Člen | 88
+
0
-

Nikdo neporadí?

Jan Suchánek
Člen | 404
+
0
-

konva: Nefunguje ?

$kat->count(':tema.*');

Editoval jenicek (10. 2. 2014 19:13)

konva
Člen | 88
+
0
-

tohle mi nefunguje :(

konva
Člen | 88
+
0
-

ahoj, stale s tim bojuju. Neporadi nekdo?

qwerin
Člen | 25
+
0
-

z hlavy:

count($kat->related('tema'));
ViPEr*CZ*
Člen | 822
+
0
-

Také z hlavy:

$kat->related('tema')->select("polozka.*")->count('*')
konva
Člen | 88
+
0
-

Na tohle to pise „no reference found tema->polozka“

David Matějka
Moderator | 6445
+
0
-

co treba

$kat->related('tema')->count(":polozka.id");
//nebo
$kat->count(":tema:polozka.id");
konva
Člen | 88
+
0
-

tak u toho prvniho pise

No reference found for $tema->related(polozka)

a u druhyho

Call to undefined method Nette\Database\Table\ActiveRow::count()
David Matějka
Moderator | 6445
+
0
-

a mas spravne cizi klice?

konva
Člen | 88
+
0
-

… nemam. Mel jsem chybne nastavenej cizi klic v tabulce „polozka“.
Tohle je spravne

$kat->related('tema')->count(":polozka.id");

diky za trpelive odpovedi.