マイグレーションでカラムを追加したときには、エンティティのアクセサも更新する
price
カラムを追加するマイグレーションを作る
# Migrationファイル public function change() { $this->table('bills') ->addColumn('price', 'integer', [ 'default' => 0, 'limit' => 11, 'null' => false, ]) ->update();
エンティティに値が入らない
$data = { 'name' => 'hoge', 'price' => 2000, # 追加したカラム ]; $entity = $table->newEntity($data); debug($entity);
object(App\Model\Entity\Bill) { 'name' => 'hoge', '[accessible]' => [ 'name' => true, (中略)
登録できない...。
試しにbin/cake bake model bills
でTableとEntityを更新してみる。
object(App\Model\Entity\Bill) { 'name' => 'hoge', 'price' => 2000, '[accessible]' => [ 'name' => true, (中略)
うまく行った!!
差分を見るとEntity
の$_accessible
が不足していた様子。
マイグレーション実行時に、Cake側が自動で追加してくれないんですね。
参考文献
以下の記事でも動揺のケースが紹介されています。
<CakePHP>追加したカラムにデータが保存されない - Qiita
CakePHP3のCookBookでは、このあたりですね。