Witam.
Posiadam na stronie portlet który wyświetla kategorie pobrań dla plików, np:
Regulaminy
Pliki
itd.
i po kliknięciu odpowiedniej kategorii na stronie mam spis plików tylko z tej kategorii. Chciałem dołożyć do tego jeszcze aby obok nazwy kategorii informacje o ilości plików w danej kategorii, np:
Regulaminy (2)
Pliki (1)
Inne (0)
Kod portletu:
<?php
Yii::import('zii.widgets.CPortlet');
class DownloadCategory extends CPortlet
{
public $title='Kategoria';
public $decorationCssClass='portletdownload-decoration';
public $titleCssClass='portletdownload-title';
public $contentCssClass='portletdownload-content';
public function getDownloadCategory()
{
return Typpobrania::model()->findDownloadCategory();
}
protected function renderContent()
{
$this->render('downloadCategory');
}
}
?>
Kod funkcji z modelu:
public function findDownloadCategory()
{
return $this->findAll();
}
Kod widoku:
<ul>
<?php foreach($this->getDownloadCategory() as $downloads): ?>
<li> <?php echo CHtml::link(CHtml::encode($downloads->nazwa), $downloads->getUrl()); ?> </li>
<?php endforeach; ?>
</ul>
Ponieważ chcę aby były wyświetlone wszystkie nazwy kategorii dlatego dane dla portletu są z tabeli Typpobrania, gdzie są dwa pola: id i nazwa, ale ma to ta wadę że nie mogę zrobić zliczenia ile plików wg danej kategorii występuje ponieważ są one umieszczone w tabeli połączonej Pobrania.
Obie tabele są połączone relacjami:
Typpobrania:
'pobrania' => array(self::HAS_MANY, 'Pobrania', 'typpobrania_id'),
Pobrania:
'typpobrania' => array(self::BELONGS_TO, 'Typpobrania', 'typpobrania_id'),
Oczywiście mogę to zrobić wg modelu Pobrania, ale wtedy nie mam kategorii w których nie ma żadnych plików.
W SQL-u byłoby to tak:
SELECT nazwa, (SELECT count(typpobrania_id) FROM tbl_pobrania WHERE typpobrania_id = p.id) AS ile FROM tbl_typpobrania p
tylko jak to wcisnąć do tego modelu ?