我正在开发一个 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]"
}
我可悲的调试尝试:
问题是在数据库的用户表中,电子邮件字段有一个大写的“E”,如“电子邮件”。然而,Laravel 默认情况下搜索带有小写“e”的“email”,这就是原因。
您可以搜索自定义 sendResetLink 函数或更改 Users 表中的列名称的方法,就可以了。