2

ログインしたユーザーの合計スコアを見つけてキャッシュしたい。私のコードは次のとおりです。

$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と評価されますが、それはなぜですか?

PSSQLステートメントについて気にしないでください。その動作!

4

1 に答える 1

1

クエリの結果がキャッシュまたはデータベースからのものであることを確認する最善の方法は、次のようにログを有効にして結果を確認することです。

        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'error, warning',
                ), 
                array(
                    'class'=>'CWebLogRoute',
                ), 

            ),
        ),
于 2012-06-16T16:57:57.110 に答える