将字段添加到Laravel 5.3注册

时间:2017-03-09 00:21:51

标签: php mysql laravel laravel-5.3

尝试在Laravel中添加一些字段到注册方法:auth。我已成功将它们添加到视图和数据库(在视觉上检查视图,在phpMyAdmin中为数据库检查),更新了控制器的验证器:

return Validator::make($data, [
      'name' => 'required|max:255',
      'email' => 'required|email|max:255|unique:users',
      'type' => 'required|max:255', //new
      'fees' => 'required|max:255', //new
      'password' => 'required|min:6|confirmed',
]);

以及更新控制器的创建功能:

return User::create([
    'name' => $data['name'],
    'email' => $data['email'],
    'type' => $data['type'], //new
    'fees' => $data['fees'], //new

    'password' => bcrypt($data['password']),
]);

然后更新模型:

protected $hidden = [
    'type','fees','password', 'remember_token',
];

但是......它没有用。创建的SQL不包含我的新字段,因此返回错误,因为数据库没有默认值..

  

SQLSTATE [HY000]:一般错误:1364字段'费用'没有   默认值

我错过了什么吗?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

当您创建User时,您没有为字段222传递值。

根据您的Validator规则,这是必填字段,因此看起来是个错误。

return User::create([
    'name' => $data['name'],
    'email' => $data['email'],
    'type' => $data['type'], //new
    'fees' => $data['fees'], //new
    '222' => $data['222'], // added

    'password' => bcrypt($data['password']),
]);

如果您不想始终为222保存值,请在迁移中将字段设置为nullable(),或在模型中添加默认值(非空)。