【CakePHP3】マイグレーションのDB変更が反映されない!
先日CakePHP3の「Migration機能」で、あるテーブルに変更を加えたんです。
以下のような感じで「tweet_type」というカラムをテーブルに追加する変更をやりました。
class AddTweetTypeProducts extends AbstractMigration { public function change() { $table = $this->table('tweets'); $table->addColumn('tweet_type', 'integer', ['default' => 1, 'null' => false,]) ->update(); $table = $this->table('draft_tweets'); $table->addColumn('tweet_type', 'integer', ['default' => 1, 'null' => false,]) ->update(); } }
上記をマイグレーションコマンドで実行すると、たしかにテーブルに新しくカラムが追加されます。
でも「Table->find」でデータを取得すると「tweet_type」のない古い状態のレコードが取得されてしまうんです・・。
これはどうもCakePHPのキャッシュに、古いテーブルのスキーマ情報が保存されてしまっていることが原因っぽいです。
「tmp/cache/models/」のディレクトリがありますよね。ここにあるファイルを全部削除して空にしてみたところ、新しいスキーマが反映されてちゃんと「tweet_type」のカラムを操作できるようになりました。
DBに変更を加えたら「models」のキャッシュを削除しなくてはいけない、こんな決まりがあるとは知りませんでした。
CakePHPはなかなか甘くないですね・・。
以上です・・。