1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【CakePHP 2.x】 テーブルにカラムを追加しても反映されない

Posted at

経緯

先日、CakePHPで構成されるWebアプリケーションに新たにデータ項目が追加されることになりました。そこでデータベースのテーブルにカラムを新規に追加しました。しかしコントローラーでモデルを参照しても、追加したカラムのデータを一向に読み取ることができず、ソースコードを何度も見返しても原因がわかりませんでした。

キャッシュファイルが原因

CakePHPのキャッシングによって、次回以降の重いクエリなどのリソースの読み込みにかかる時間を短縮できます。公式のドキュメントによると、Cacheクラスを使用することでキャッシュを利用することができ、以下にある組み込みキャッシュエンジンを使用できるそうです。

  • FileCache
  • ApcCache
  • Wincache
  • XcacheEngine
  • emcacheEngine
  • MemcachedEngine

2.3以降ではFileCacheがデフォルトのキャッシュエンジンに設定されており、特定のディレクトリにキャッシュファイルが生成されます。今回のケースでは、app/tmp/cache/modelsに該当のモデルのキャッシュファイルが存在しました。テーブルにカラムを追加した後も、キャッシュファイル内の古い情報を参照し続けたことが原因になります。

ちなみにキャッシュの設定はapp/Config/core.phpで行うことができます。

core.php
Cache::config('default', array(
    'engine' => 'File',
    'duration' => 3600,
    'path' => CACHE,
    'prefix' => 'cake_'
));

参考

公式ドキュメント:キャッシュ
https://book.cakephp.org/2.0/ja/core-libraries/caching.html

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?