【CakePHP3】プライマリキーを指定してデータを保存したい!
CakePHP3で、主キー(Primary Key)を指定してデータを保存しようとしたのですが、「Field 'hogehoge_id' doesn't have a default value」とエラーが出て保存失敗してしまいました・・。
コードは以下のようなもの。
$tweet_info->hogege_id = 100; //主キーに100をセット $tweet_info->text = "hogege test"; $entity = $this->tweets->newEntity(); $entity = $this->tweets->patchEntity($entity, (array)$tweet_info); $ret = $this->tweets->save($entity); $this->log(print_r($entity, true), "debug");
エラーの原因は「Entity」の設定ファイルにありました(src/Model/Entity/に置いてあるやつです)
このファイルに「$_accessible」という設定がありますよね。
この中の「hogege_id」の設定が「false」になっていると、上記のように一括代入(mass assignment)をするときに「hogege_id」の値の変更ができなくなるそうです。
以下のように「'hogege_id' => true」とセットしてあげると、一括代入が可能になりsaveができるようになりましたとさ。
protected $_accessible = [ '*' => true, 'hogege_id' => true, ];
公式にもちゃんとこのことが書いてありますね(一括代入の項目です)
http://book.cakephp.org/3.0/ja/orm/entities.html#mass-assignment
以上!