首页 > 解决方案 > SQLSTATE [HY000]:一般错误:1364 字段“名字”没有默认值(SQL:插入“用户”(“电子邮件”)值(test@test.com))

问题描述

我是 Laravel 框架的新手。

我在迁移用户表时遇到了一个问题。我在我的表的“名字”中添加了可空值,它可以工作,但在“姓氏”列中显示相同的错误。我在每一列中都包含了 nullable(),这不是正确的方法。这个怎么解决??任何人都可以请建议。

用户迁移表,面临“名字”列的问题。 create_user_table.php

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->id();
        $table->string('firstname');
        $table->string('lastname');
        $table->string('email')->unique();
        $table->date('dob');
        $table->char('address',100);
        $table->bigInteger('phonenumber');
    });
}

带有存储 UserController.php 的UserController

    public function store(Request $request)
        {
            $request->validate([
                'firstname'=>'required',
                'lastname'=>'required',
                'email'=>'required',
            ]);

            $user=new User([
                $user->firstname=>$request->get('firstname'),
                'lastname'=>$request->get('lastname'),
                'email'=>$request->get('email'),
                'dob'=>$request->get('dob'),
                'address'=>$request->get('address'),
                'phonenumber'=>$request->get('phonenumber')
                ]);
                $user->save();
                return redirect('/users')->with('success','user added');
        }

标签: phplaravelcruddatabase-migrationlaravel-controller

解决方案


实现这一目标的最简单方法是:

   public function store(Request $request)
    {
        $request->validate([
            'firstname'=>'required',
            'lastname'=>'required',
            'email'=>'required',
        ]);

            $user=new User();
            $user->firstname = $request->firstname;
            $user->lastname = $request->lastname;
            $user->email = $request->email;
            $user->dob = $request->dob;
            $user->address = $request->address;
            $user->phonenumber = $request->phonenumber;
            $user->save();
            return redirect('/users')->with('success','user added');
    }

同样在您的模型中,您必须添加此行以进行质量分配

protected $fillable = ['firstname','lastname','email','dob','address','phonenumber'];

您可以查看此链接进行批量分配:https ://laravel.com/docs/7.x/eloquent#mass-assignment


推荐阅读