CakePHPPHPプログラミング

【初心者向け】テーブル構造を変えたらfindで取得できなくなった【CakePHP】

Vectorjuice-an abstract vector created by jp.freepik.com

ペンちゃん
ペンちゃん

本番サーバーと同じテスト環境での確認もできたし。

よしっ!本番公開だ!

あれ?どうやら追加したフィールドが取得できてないし、更新もできてないみたい。

なんだこれ?

本番環境でこんなことが起きると焦りますよね。

結論、問題はキャッシュでした!

解決法

今回のシステムは少し古いバージョンでしたが、

app/tmpにキャッシュファイルが作成されるのはどのバージョンでも一緒でしょう。

core.phpに設定されている

Cache::config('default', array('engine' => 'File'));

この第一引数、今回は’default’を見てください。

cake_model_default_テーブル名

このような名前のキャッシュファイルが存在しています。

このファイルを削除することで、

モデルのキャッシュが消え、

追加したフィールドを更新することができました。

解説

なぜキャッシュファイルがリフレッシュされなかったのか?

core.phpに設定されている

Configure::write('debug', 0);

デバッグレベルが関係しています。

こちらの設定が0だとキャッシュがリフレッシュされません。

1~3に設定するとキャッシュはリフレッシュされるのでこのような問題は起きなかったでしょう。

しかし、本番環境でエラー表示が出てしまうのはまずいので

キャッシュがリフレッシュされたら0に戻してください。

ここまでやっても直らない場合は、キャッシュ無効化も可能です。

こちらもcore.phpの設定で

Configure::write('Cache.disable', true);

これでアプリケーション全体でキャッシュをオフにできます。