CakePHPで「SQLSTATE[HY000]: General error: 1364 Field ‘xxx’ doesn’t have a default value」の対処法

CakePHPで「SQLSTATE[HY000]: General error: 1364 Field 'xxx' doesn't have a default value」の対処法

481 回閲覧されました

みなさんこんにちは、jonioです。

ある内容を実装している時に「SQLSTATE[HY000]: General error: 1364 Field ‘department_id’ doesn’t have a default value」のエラーが表示されました。

こうすればエラーを外せるかもしれないという可能性を解説します。

$_accessibleの設定

私は個人でLaravelを扱いますがフォームの値をテーブルに登録する時にモデルの中の「$fillable」の設定を忘れて登録ができないのを経験しています。

記述はどう考えても正しいので「変だな〜」と思っていたのですがLaravelの「$fillable」にあたるのがCakePHPだと「CakePHPのプロジェクト > src > Model > Entity > 〜.php」の中にある「$_accessible」の項目です。

今回は「department_id」カラムでエラーが出ていたので$_accesibleを下記に変更しました。

protected $_accessible = [
  'name' => true,
  'email' => true,
  'password' => true,
  'created' => true,
  'modified' => true,
  'company_id' => true,
  'department_id' => true             //この行を追加
];

これでエラーがなくなりました。