2012-01-09 85 views
0

我有兩個模型。 1)用戶和2)發帖 用戶可以有許多帖子。這意味着,在這裏我們將使用hasMany綁定兩個模型。我列出用戶,並在該列表中,我想顯示帖子的#號。我正在使用cakephp分頁。我無法以這種方式列出。任何幫助請。cakephp bindmodel與計數

user.php的(模型)

<?php 
class User extends AppModel { 
    var $name = 'User'; 
    var $primaryKey = 'user_id'; 
    var $hasMany = array('Post'); 
} 
?> 

post.php中(型號)

<?php 
class Post extends AppModel { 
    var $name = 'Post'; 
    var $primaryKey = 'post_id'; 
} 
?> 

我應該寫在控制器分頁?

我試過counterCache選項,但沒有得到任何好運。

回答

1

你可以使用counterCache但對於這一點,你需要在模型中後您的模型中指定

var $belongsTo = array(
    'User' => array('counterCache' => true) 
); 

user表必須有一個附加字段

post_count INT() 

完成後,每次用戶保存/刪除帖子時,post_count會自動增加/減少,這很方便。

另一種方案是在你搜索PARAMS

'group' => array('Post.id'), 
'fields' => array('count(Post.id) as post_count', ...), 
添加一組條款
1

你到底在想什麼?您想在顯示用戶列表時顯示每個用戶的發帖數量?

如果是這樣,那麼這與分頁無關,而是與您的控制器中檢索到的數據數組有關。

假設控制器稱爲指數:

function index() { 
    $this->User->recursive = 0; 
    $this->set('users', $this->paginate()); 
} 

提供你的人際關係的設置是否正確,[他們看起來那麼]你應該能夠找到的所有用戶帖子嵌套在該陣列英寸然後,您可以對它們進行計數並顯示結果。

蛋糕調試器是用於調查數據的蛋糕輸出,你真的有用:

debug($yourdataarray) 

但是發現每個崗位和計數它們聽起來可能性能問題。我親自完成的解決方案是將模型中的添加和刪除控制器添加到相應用戶的數據庫條目中的「發佈」模型中,或從其中刪除。然後,您可以以簡單快捷的方式迴應該數據。

希望有所幫助。