Я хочу найти общий балл пользователя loggedin и хочу его кэшировать. Мой код:
$dependency = new CDbCacheDependency('SELECT MAX(id) FROM tbl_points_log where user_id='.Yii::app()->user->id); $sql='SELECT SUM( point) as user_point FROM tbl_points_log left join tbl_action on tbl_action.id = tbl_points_log.action_type_id where user_id='.Yii::app()->user->id; $user_point = Yii::app()->db->cache(1000, $dependency)->createCommand($sql)->queryAll();
Правильно ли указан вышеуказанный код? Должен ли я внести некоторые изменения в файл конфигурации, чтобы сделать кеширование запросов? Я просто добавил
'cache' => array( 'class' => 'CDbCache' ),
по компонентам
var_dump($dependency->getHasChanged());
всегда оценивает значение true, даже если я не вносил изменений в базу данных, так почему это так?
PS Не беспокойтесь о инструкции SQL. Работает!
лучший способ узнать, что результаты запроса поступают из кеша или базы данных, заключается в том, чтобы включить ведение журнала, как показано ниже, и увидеть результаты
'log'=>array( 'class'=>'CLogRouter', 'routes'=>array( array( 'class'=>'CFileLogRoute', 'levels'=>'error, warning', ), array( 'class'=>'CWebLogRoute', ), ), ),