常规错误:1364字段“ department_id”没有默认值

时间:2019-11-01 03:28:32

标签: php mysql laravel-5 eloquent

这是错误

  

SQLSTATE [HY000]:常规错误:1364字段'department_id'没有   具有默认值(SQL:插入ms_usernameusername,   roleemailpasswordupdated_atcreated_at

ms_user模型

protected $fillable = [
        'department_id','name', 'email', 'password','username','role',
    ];

创建功能:

    {
        return ms_user::create([
            'name' => $data['name'],
            'username' => $data['username'],
            'role' => $data['role'],
            'email' => $data['email'],
            'department_id' => $data['department_id'],
            'password' => bcrypt($data['password'])
        ]);
    }

验证器功能:

 protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'username' => 'required|string|max:255',
            'role' => 'required|in:user,admin',
            'department_id' => 'required|string',
            'email' => 'required|string|email|max:255|unique:ms_user',
            'password' => 'required|string|min:6|confirmed',
        ]);
    }

department_id是一个下拉菜单,其中包含ms_department表中的数据, department_id成为ms_user表中的外键,并成为ms_department

中的主键

2 个答案:

答案 0 :(得分:0)

您似乎试图创建一个将字段department_id设置为null的用户。在您的控制器中,它表明您正在传递$data['department_id'],我认为该值来自Request对象。但是由于该字段没有任何值,因此当您执行创建user的代码时,它将向该数据库发送值。包含用户数据的表不允许该字段为空。

您可以通过更新迁移来解决此问题,从而在departement_field上允许null

$table->integer('department_id')->nullable();

或者您可以检查$data['department_id']是否不为空,但在控制器中使用debug($data)

答案 1 :(得分:0)

如果引用department_id的输入的name属性为空或拼写错误,似乎您正在尝试进行批量上传

我遇到了同样的问题,但是在我的情况下,该错误源自我的控制器,我在其中交换了居住在exp_date上的字段名