2012-02-29 157 views
0

我正在使用cakephp。在某些查詢我用這幾樣發現的:CakePhp包含模型緩存

$this->Photo->Behaviors->attach('Containable', array('autoFields' => true)); 

這是含陣列,我在查找中使用:

'contain'=>array(
    'User'=>array('fields'=>array('User.Name','User.Username')), 
    'Like' => array('User'=>array('fields'=>'Name'), 
        'order'=>'Timestamp DESC' 
       )), 
'recursive' => 2, 

的問題是,每次我想網友認爲,很喜歡這個名字一張照片。 Cakephp執行此查詢。

For example: SELECT `User`.`Name` FROM `Users` AS `User` WHERE `User`.`id` = 2175 

如果我在一張照片上有300張喜歡的照片,我會爲User.Name創建另一個300查詢。所以,我想緩存這種請求。我在我的服務器上正確安裝了memcache,它工作正常。但是我找不到緩存Cake對可容納行爲進行查詢的方法。

有人有這個問題嗎?

感謝 G.

回答

0

爲什麼不使用CakePHP的counterCache功能呢?

在cakephp書中有很多關於緩存查詢的文檔,不僅僅存在於我的緩存中,還有很多其他的方式。查看CakeCache類。

0

在這個主題上有很多方法。 如果它只是關於belongsTo關係,它歸結爲使用bindModel()手動連接表。

這裏是一個很好的行爲:http://planetcakephp.org/aggregator/items/891-linkable-behavior-taking-it-easy-in-your-db

它需要的是自己的照顧。

+0

良好的行爲..但在我的情況是一個問題做連接。我的桌子增長非常快,加盟開始變得非常沉重。 – Giacom0 2012-03-01 08:45:59

+0

然後使用Scott Harwell的方法:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#countercache-cache-your-count – mark 2012-03-01 09:55:26