CakePHP kullanarak bir kategori içinde makalelerin sayısını saymaya?

4 Cevap php

Ben tablo ile basit bir cakephp uygulaması var articles bir {[kategorilerin bir id sütunu (başvuru için cat_id sütun var 4)]} tablo.

Ne yapmak istiyorum tüm kategoriler adlarını görüntüleyebilir, her o kategoriye ait makale sayısı bir sayı ile takip etti.

I cakephp bir find('count') işlevi olduğunu biliyorum, ama bu sadece bir tablo / alan üzerinde çalışıyor. Nasıl kategori adları ve benim görünümü için her kategori için makalelerin sayısının bir listesini almak için iki tablo bağlarım?

Teşekkürler

4 Cevap

Bu model üzerinde afterFind geri arama yapmak için daha iyi olabilir ama denetleyici lutfen yapılabilir.

$cats - $this->Cat->find('all',array('recursive'=>-1));
foreach($cats as $key=>$cat){
  $cats[$key]['ArticleCount'] = $this->Cat->Article->find('count',array(
     'conditions'=>array('Article.cat_id'=>$cat['Cat']['id']))
  );
}

Bu çalışırsa ya bakın

$cats = $this->Cat->find('all',array('contain'=>array(
          'Article'=>array('fields'=>array('COUNT(*) AS ArticleCount')
        )));

açıkçası kategori model üzerinde containable davranış eklemek gerekir.

Ayrıca countercache özelliğini kullanabilirsiniz: http://book.cakephp.org/view/816/counterCache-Cache-your-count

Ayrıca counterCache bir sütun değeri içindeki sayısını önbelleğe kontrol dışarı düşünebilirsiniz.

Teşekkürler, bu çalıştı:

    	$cats = $this->Article->Cat->find('all',array('recursive'=>-1));
	foreach($cats as $key=>$cat){
	  $cats[$key]['ArticleCount'] = $this->Article->find('count',array(
	     'conditions'=>array('Article.cat_id'=>$cat['Cat']['id']))
	  );
	}