0

CakePHPブログチュートリアルを拡張し、投稿にカテゴリを追加しました。投稿モデルはカテゴリモデルに属しています。投稿ビューで、カテゴリテーブルをループして、ビューのメニューのカテゴリを一覧表示しています。これは正常に機能します。

/* gets the category names for the menu */
$this->set('category', $this->Post->Category->find('all'));

現在、各メニュー(カテゴリ)アイテムに投稿数を追加しようとしています。これまでのところ私はこれを手に入れました:

/* gets the category count for category 2*/
$this->set('category_2_count', $this->Post->find('count', array(
'conditions' => array('Category.id =' => '2'))));

問題は、ビューでループを使用できなくなったことです。これで私は各カテゴリー+各カウントを取得する必要がありますが、これは非常にエレガントではないようです。カテゴリ名とカウントをクエリして、ビューの1つの配列を取得する方法はありますか?

何か案は?私はCakeを初めて使用しますが、どんな助けでも大歓迎です。

4

2 に答える 2

0

これを試して:

$stats = $this->Category->Post->find('all', array(
    'fields' => array(
        'Category.*',
        'COUNT(Post.id) AS cnt'
    ),
    'group' => 'Category.id'
));
于 2012-07-02T21:53:44.430 に答える
0

コントローラーで:

$this->set('category', $this->Post->Category->find('all', array(
    'fields' => array(
        '*',
        '(SELECT COUNT(*) FROM posts WHERE category_id = Category.id) AS `post_count`'
    )
)));

あなたの見解では:

foreach ($category as $c) {
    echo $c['Category']['name']; // category name
    echo $c[0]['post_count']; // post count
}
于 2012-07-03T18:12:17.727 に答える