LoginSignup
1
1

More than 3 years have passed since last update.

Laravelでcreateを実行してもカラムの値がNULLになってしまうときの解決策

Posted at

問題

  • Laravelcreateを実行したが、値を指定したのに挿入される値はNULLになっていた。
  • Laravelcreateを実行した際、SQLSTATE[HY000]: General error: 1364 Field (カラム名) doesn't have a default valueが発生した。

解決策

モデルを見直す

自分の場合、モデルで該当のカラムを$fillableの対象に記入していなかった。

app\Model.php
class Model extends Authenticatable
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password', 
    //(ここにcreateを実行してもNULLになってしまっていたカラムを指定する)
    ];

原因

Laravelでは、モデルを通してcreateなどを利用しデータベースにレコードなどを保存する際、悪意あるユーザーが勝手にカラムなどを作成し、その人が実質上の管理者とならないように管理者を保護する機能が標準で備わっている。
そのため、$fillableなどでcreateで作成、挿入する対象のカラムを指定しないと、Laravelが悪意あるユーザーかもしれないと思ってしまい、自動でNULLを入れて保護してしまうことが原因だった。

createなどでデフォルトの値を設定していないカラムは、$fillableなどで保護するのを忘れないようにしよう!!

参考資料

1
1
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
1