2012-07-05 32 views
1

這是場景:我有一個Posts模型,每個帖子有一個Meta附加到$hasMany。元模型包含一個查看計數器,一個下載計數器等。CakePHP:我如何從另一個值中排序模型?

這樣做是爲了避免每次用戶訪問帖子時更新帖子,並且因爲我將有另一個索引,其中最近修改的帖子將會駐留,所以每次訪問時更改帖子都會使「最近修改」索引的目的失敗,因此viewsdownloads保存在Meta中。

如何使用來自Meta模型的數據(如下載)對分頁文章索引視圖進行分頁,從而使文章按下載順序排序?

我希望這很清楚,如果您需要更多數據,請在下面留言。

回答

1

首先,你需要聲明PAGINATE設置,這樣

$this -> paginate = array(
      'limit' => 3, // your desired limitation 
      'contain' => array('Meta'), 
      'fields' => array(
       'Post.title', 
       'Post.date_published', 
       ..., 
       'Meta.downloads', 
       'Meta.views' 
      ), 
      'order' => 'Meta.downloads {ASC|DESC}' 
     ); 

然後你可以分頁這樣的:

$this -> set('posts', $this -> paginate('Post')); 

假設你的模型被稱爲郵政和元。

編輯 爲了這個工作(在包含PAGINATE數組中鍵),您需要將中可容納的行爲添加到元模型:

public $actsAs = array('Containable'); 
+0

它沒有工作,我得到數據庫錯誤: '錯誤:SQLSTATE [42S22]:列未找到:1054'字段列表'中的未知列'Meta.downloads' – 2012-07-06 01:50:13

+0

好吧,我編輯了上述答案。請嘗試使用Containable行爲(AND包含在分頁數組中的''''鍵 – wnstnsmth 2012-07-06 07:07:56

+0

將嘗試它並讓您知道,謝謝! – 2012-07-06 18:15:03

相關問題