Friction River Software

  • お問い合わせ

CakePHP5入門【補足②】キャッシュクリア

A子

あるWebアプリケーション(CakePHP5ベース)で使っているデータベーステーブルに対して、ほんの少し変更を加えたんだよ

例えばだけど、Testsテーブルの中の項目Aと項目Bを削除して、新たに項目Cと項目Dを追加したのね

C菜

えっと~

だったらControllerコントローラーModelモデルについても変更しないとですね~

A子

もちろん「src/Model/Entity」の中にある「Test.php」、「src/Model/Table」の中にある「TestsTable.php」の二つを修正したよ

あとコントローラーもね

C菜

もしかして~

うまく動かなかったんですか~?

A子

そうなのよ
項目Aと項目Bが出現する箇所をエディターの検索機能で調べて全部書き換えたはずなのに、なぜかエラーになるのよね

しかも「logs」ディレクトリの中にある「error.log」を見てみると、項目Aが見つからない(Column not found)というデータベース関連のエラーなの
(削除したはずの項目よ)

もうね
さっぱり分からん…お手上げよ(苦笑)

C菜

そんなときはB美部長の出番ですよ~

A子

助けて、B美先生!

B美

データベースに対して何らかの変更を加えた場合のポイントとして、必ず覚えておいてほしいのが「キャッシュクリア」よ

A子

ん?
そんなの習ったっけ?

C菜

あっ!

CAPTCHAキャプチャを組み込むときと、設置デプロイのときに出てきたやつじゃないでしょうか~?
(CakePHP5応用編⑥及びCakePHP5応用編⑩を参照)

B美

さすがはC菜ね

bin/cake cache clear_all[Enter]

…がキャッシュクリアのコマンドよ

A子

あー、あった、あった

よく分からんけど、言われた通り実行したやつじゃん

B美

実は、データベースへの変更がキャッシュに反映されずに、以前の情報が残っていることがあってね

だからコードをいくら修正しても、エラーが出続けるってことがあったりするのよ(苦笑)

A子

まじかよ!

そんなの、知らなかったら絶対に解決しないよ!
(コードの問題じゃないんだから、どうしようもないじゃん…)

C菜

Webフレームワーク(CakePHP)って便利ですけど、そんな落とし穴があったりするんですね~

A子

とりあえずやってみよう

えっと、プロジェクトのディレクトリに移動してっと

bin/cake cache clear_all[Enter]

・・・

くっ、ばっちり(エラーが出ることなく)動いたよ
悩んだ時間を返せ!…って言いたい(苦笑)

B美

まぁまぁ、良い経験になったでしょ

一回苦労しておけば、二度と忘れないしね(笑)

C菜

ですね~

A子

他人事ひとごとだと思って、適当なことを…(怒)

まぁ、確かに二度と忘れないけどさ(苦笑)