related přes více tabulek?
- motorcb
- Člen | 552
Představme si následující databázi:
CREATE TABLE `kategorie` (
`id` INTEGER NULL AUTO_INCREMENT DEFAULT NULL,
`nazev` VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `clanky` (
`id` INTEGER NULL AUTO_INCREMENT DEFAULT NULL,
`kategorie_id` INTEGER NOT NULL,
`titulek` VARCHAR(100) NULL DEFAULT NULL,
`text` MEDIUMTEXT NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `komentare` (
`id` INTEGER NULL AUTO_INCREMENT DEFAULT NULL,
`clanek_id` INTEGER NOT NULL,
`text` MEDIUMTEXT NOT NULL,
PRIMARY KEY (`id`)
);
-- ---
-- Foreign Keys
-- ---
ALTER TABLE `clanky` ADD FOREIGN KEY (kategorie_id) REFERENCES `kategorie` (`id`);
ALTER TABLE `komentare` ADD FOREIGN KEY (clanek_id) REFERENCES `clanky` (`id`);
Chtěl bych vypsat všechny kategorie a články. A zároveň vypsat počet
komentářů v kategorii a počet komentářů v článku.
Jen se mi nedaří zjistit celkový počet komentářů pro kategorii. Je
možné udělat related přes více tabulek???
{foreach $database->table('kategorie') as $kategorie}
{$kategorie->nazev} : TODO ??? POČET KOMENTÁŘŮ V KATEGORII ??? TODO <br/>
{foreach $kategorie->related('clanky') as $clanek}
- {$clanek->titulek} : {$clanek->related('komentare')->count("*")}<br/>
{/foreach}
{/foreach}
- vvoody
- Člen | 910
{foreach $database->table('kategorie') as $kategorie}
{$kategorie->nazev} : {$connection->table('komentare')->where('clanek_id',$kategorie->related('clanky')->select('id'))->count('*')} <br/>
{foreach $kategorie->related('clanky') as $clanek}
- {$clanek->titulek} : {$clanek->related('komentare')->count("*")}<br/>
{/foreach}
{/foreach}
V kazdej iteracii nad kategoriami potrebujes novy selection nad komentarmi, preto treba ten connection (mozno by to slo aj inak riesit), ale nedam ruku do ohna za to ze to bude fungovat ;)
- vvoody
- Člen | 910
Napodobne. Len tak na zamyslenie, bolo by cistejsie si tam vlozit uz len samotny selection a pri kazdej iteracii pouzivat jeho klon? Fakt nema selection nejaky mechanizmus, ktory ho akoby vynuluje?
Edit: pripadne si spravit taky minimodel, ktory by riesil tuto funkcionalitu a obsahoval connection ako private property. Ten by som do sablony nacpat uz nemal problem.
Editoval vvoody (4. 7. 2012 10:35)