Laravel 使用已验证的数据创建新用户

Laravel 使用已验证的数据创建新用户,laravel,Laravel,我试图使用一个干净的语法,我在我的更新函数中使用,但我有问题 我创建了一个表单来创建管理员(用户类型)。表单传递给我的控制器的Store函数,进行验证,并应创建一个管理员,并使用提交的信息更新该管理员 我的控制器中有以下各项: public function store(Request $request) { $data = request()->validate ([ 'name' => 'required|min:3', 'email' =

我试图使用一个干净的语法,我在我的更新函数中使用,但我有问题

我创建了一个表单来创建管理员(用户类型)。表单传递给我的控制器的Store函数,进行验证,并应创建一个管理员,并使用提交的信息更新该管理员

我的控制器中有以下各项:

public function store(Request $request)
{
    $data = request()->validate ([
        'name' => 'required|min:3',
        'email' => '',
        'phone_number' => '',
        'password' => '',

    ]);

    $internalAdmin = new Admin;
    $internalAdmin->update($data);
    $internalAdmin->save();
}
我得到以下错误:

SQLSTATE[HY000]:一般错误:1364字段“电子邮件”没有默认值(SQL:insert into
admins
updated\u at
created\u at
)值(2019-12-18 16:10:00,2019-12-18 16:10:00))


Laravel提供电子邮件默认值为NOTNULL

这就是为什么你会显示错误

若您尝试将电子邮件设置为默认空值,或将数据库设置为默认空值上的标记


您将不会再次显示此错误。

此处是在黑暗中拍摄的,但对尚未保存到数据库中的模型调用
->update()
没有任何意义,请尝试以下操作,看看它是否适合您

$internalAdmin = Admin::create($data);

new Admin
和create之间的区别在于,new创建了一个新对象,但它只存在于内存中,此时
Admin::create()
创建对象,用传递给它的内容填充字段,并将记录保存到数据库中

确保在请求中传递的
电子邮件
,因为它不应与@Joseph所说的内容一起为空。确保“电子邮件”位于用户模型上的$fillable数组中
->update()
是一种批量分配方法,因此必须填充传递给它的属性,尽管要在验证中添加所需的属性。我还确保在表格中填写了电子邮件地址。还是同样的错误,我想这与我在管理模式中有一个守卫有关。我有两个登录系统(用户和管理员)。我有一个管理模型:protected$guard='Admin';。我认为这不会影响在我上面的代码中创建一个新的管理员