Home > PHP | フレームワーク > CakePHPではまったこと 2(findとキャッシュ)

CakePHPではまったこと 2(findとキャッシュ)

丸数字使うと20が限界であることを思い出したため。これは自分への挑戦です。
20を超えてやるぞと。

モデルから繰り返しfindするとき、キャッシュが効くので要注意。


$hoge = $this->Hoge->findByName('foo');
if (!$hoge) {   // $hoge == false
    $hoge_data = array('Hoge' => array('name' => 'foo'));
    $this->Hoge->save($hoge_data);
    $hoge = $this->Hoge->findByName('foo');  // $hoge == false
}

ってやると、$hogeはいつまでたってもfalse。
2回目のfindでは、1回目のfindでのキャッシュを返すためです。
これを防ぐためには、2回目のfindの前に


$this->Hoge->create();   // リセット

ってやるか、


$this->Hoge->cacheQueries = false;  // キャッシュを無効

ってやるか。

参考:某CakePHPフォーラム

追記:既存データを更新した場合、create()だけじゃキャッシュを見てしまうようだ。新規の場合もひょっとしたら・・・。cacheQueriesをfalseにするのが確実なようです。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://red-treasure.com/report/wp-trackback.php?p=41
Listed below are links to weblogs that reference
CakePHPではまったこと 2(findとキャッシュ) from コスミー報告書[社外秘]

Home > PHP | フレームワーク > CakePHPではまったこと 2(findとキャッシュ)

Search
Feeds
Meta
 合計:019091
 今日:0084 昨日:0146

Return to page top