Laravel 密码重置错误:“电子邮件”列不能为空

问题描述 投票:0回答:1

我正在开发一个 Laravel 应用程序,其中实现了密码重置功能。但是,我一直遇到以下错误:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'email' cannot be null (Connection: main, SQL: insert into password_resets (email, token, created_at) values (?, $2y$10$sFSxC9pgIbmRisHh4RZK5.j0cZNLlmogdlbiokfnKDLoSv4ng.SHW, 2024-01-29 14:44:11))", 

这是我的 'sendResetPasswordEmail' 函数的代码片段:

public function sendResetPasswordEmail(Request $request)
{
    $request->validate(['email' => 'required|email']);

    $email = $request->input('email');

    $status = Password::sendResetLink(['email' => $email]);

    return $status === Password::RESET_LINK_SENT
        ? back()->with(['status' => __($status)])
        : back()->withErrors(['email' => __($status)]);
}

这是我的帖子请求的正文:

{
    "email": "[email protected]"
}

我可悲的调试尝试:

  • 我已确认请求正文中存在“电子邮件”并且已正确提取。
  • 我已经验证了我的 Laravel 版本,确保它是最新的并且 遵循当前文档
  • 我已将password_resets 表中的“电子邮件”字段设为可为空。但是,它注册为空值。
laravel authentication passwords forgot-password
1个回答
0
投票

问题是在数据库的用户表中,电子邮件字段有一个大写的“E”,如“电子邮件”。然而,Laravel 默认情况下搜索带有小写“e”的“email”,这就是原因。

您可以搜索自定义 sendResetLink 函数或更改 Users 表中的列名称的方法,就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.