ホーム > アーカイブ > 2007-06
2007-06
query 関数で同じ sql を実行するとキャッシュが効いてしまう
- 2007/06/04
- Web開発関連
例えば、
$data = $this->query('select * from sample');// ここで sample テーブルに対してレコード追加を行う$data = $this->query('select * from sample');
上記のような処理をすると、1 度目の query 文で取得したデータと 2 度目の query 文で取得したデータは異なるはずだが、CakePHP の仕様ではキャッシュがデフォルトでオンになっているためレコード追加後のデータは取得できない。
仕方がないので、cake/libs/model/datasources/dbo_source.php を修正する。
修正前
function query() {
$args = func_get_args();
$fields = null;
$order = null;
$limit = null;
$page = null;
$recursive = null;
function query() {
$args = func_get_args();
$fields = null;
$order = null;
$limit = null;
$page = null;
$recursive = null;
if (count($args) == 1) {
return $this->fetchAll($args[0]);
修正後
function query() {
$args = func_get_args();
$fields = null;
$order = null;
$limit = null;
$page = null;
$recursive = null;
if (count($args) == 1) {
return $this->fetchAll($args[0], false);
追記
この前気づいたけどこの修正は間違い。query() 関数の何個目かの引数に false を渡せばキャッシュされないようになります。
- コメント: 0
- トラックバック(閉): 0
Meadow で文字化けしているファイルを開く時は
Meadow/Emacs memo: Meadow 関連の少し高度な知識
C-x RET c euc-jp-unix C-x C-f
- コメント: 0
- トラックバック(閉): 0
ホーム > アーカイブ > 2007-06