Temat: Jak policzyć ilość postów w danej kategorii?

Witam,
jestem początkującym programistą i to mój drugi dzień z CakePHP. Dopiero co skończyłem tutorial jak napisać bloga.
Przejdźmy do problemu:

Dodałem tabelę categories o polach id, title.
W tabeli posts dodałem nowe pole cat_id.

Teraz wyświetlając kategorie chciałbym, aby obok nich wyświetlała się ilość postów do niej przypisanych. Jak to najprościej zrobić?

Próbowałem za pomocą takiego fragmentu kodu ale się nie udało:

    $this->Category->bindModel(array('hasMany' => array('Post')));
    $posts = $this->Category->Post->find('count', array('conditions' => array('cat_id' => 'Category.id')));

2

Odp: Jak policzyć ilość postów w danej kategorii?

dodaj pole Category.post_count w bazie, i w relacji użyj pola couterCache:
http://book.cakephp.org/view/816/counte … your-count

3

Odp: Jak policzyć ilość postów w danej kategorii?

Ok, dzięki.

Teraz chciałbym wyświetlić w rozwijanym menu listę kategorii z bazy danych (w widoku posta). Po lekturze tego tematu http://forum.cakephp.org.pl/topic/43/fi … na-tabela/ próbowałem pobrać kategorie metodą

class PostsController
...
$categories = ClassRegistry::init('Category')->find('all');
print_r($categories);

Zauważyłem, że zamiast samych kategorii pobiera mi również posty. Jak uniknąć ładowania niepotrzebnych danych?

4

Odp: Jak policzyć ilość postów w danej kategorii?

Dobra, mam już rozwijaną listę z kategoriami, wszystko ładnie zapisuje się do bazy, ale liczniki postów w danej kategorii nadal nie działają.
Pole Categories.post_count dalej wynosi 0. Tak wygląda mój category.php:

<?php
class Category extends AppModel {
  var $name = 'Category';
  var $hasMany = array(
    'Post'  => array('counterCache' => true)
  );
}
?>

Co jest nie tak?

### EDIT
Problem rozwiązany, counterCache trzeba było dodać do modelu Post.

Ostatnio edytowany przez trututu (2009-12-20 18:59:49)

5

Odp: Jak policzyć ilość postów w danej kategorii?

trututu napisał/a:

Zauważyłem, że zamiast samych kategorii pobiera mi również posty. Jak uniknąć ładowania niepotrzebnych danych?

Behavior Containable http://book.cakephp.org/pl/view/474/Containable