用户注册字段未保存在Laravel 5中


User registration fields not being saved in Laravel 5

我使用的是Laravel 5,并对默认注册器进行了一些修改,使其使用first_name和last_name,而不仅仅是名称。但由于某种原因,当创建用户时,数据库中的first_name和last_name字段为空。这是我正在使用的代码:

public function validator(array $data)
{
    return Validator::make($data, [
        'first_name' => 'required|max:255',
        'last_name' => 'required|max:255',
        'discount_code' => 'max:255',
        'register_email' => 'required|email|confirmed|max:255|unique:users,email',
        'register_password' => 'required|confirmed|min:6|max:60'
    ]);
}
public function create(array $data)
{
    return User::create([
        'first_name' => $data['first_name'],
        'last_name' => $data['last_name'],
        'email' => $data['register_email'],
        'password' => bcrypt($data['register_password'])
    ]);
}

在create方法中,如果我在User::create之前执行print_r($data),则称为first_name和last_name,但当条目存储到数据库中的users表中时,只存储电子邮件和密码。这也是我的表格定义:

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(10) unsigned NOT NULL,
    `first_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
    `last_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
    `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
    `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
    `discount_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
    `remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
    `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
    `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

first_namelast_name字段需要在模型中通过$fillable/$guarded数组进行批量分配。