CakePhp содержит кэш модели - PullRequest
       8

CakePhp содержит кэш модели

0 голосов
/ 29 февраля 2012

Я использую CakePHP. В каком-то запросе я использую такой вид находки:

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

Это массив Contain, который я использую в находке:

'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 лайков на одной фотографии, я сделаю еще 300 запросов для User.Name. Итак, я хотел бы кэшировать этот вид запроса. Я правильно установил memcache на моем сервере, он работает нормально. Но я не могу найти способ кешировать запрос, который делает торт с помощью Containable Behaviors.

У кого-нибудь была эта проблема?

Спасибо G.

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Есть несколько подходов на эту тему.если речь идет только об отношениях "с принадлежностью", то сводится к тому, чтобы вручную объединять таблицы с помощью bindModel ().

Вот хорошее поведение: http://planetcakephp.org/aggregator/items/891-linkable-behavior-taking-it-easy-in-your-db

оно само позаботится об этом.

0 голосов
/ 29 февраля 2012

Почему бы не использовать функцию counterCache в CakePHP?

В книге CakePHP есть много документации о кешировании запросов не только в моем кеше, но и во многих других случаях. Проверьте класс CakeCache.

...