为电子邮件使用自定义列名时出现未知列错误 - Laravel Fortify
Unknown Column Error when using custom column name for email - Laravel Fortify
我有一个数据库,其中包含用户 table 的名为 mail
的列,但在 Laravel 中是 email
。我现在的问题是忘记密码功能。
我总是会收到以下错误:
SQLSTATE[23000]: Integrity constraint violation:
1048 Column 'email' cannot be null
(SQL: insert into `password_resets` (`email`, `token`, `created_at`) values
(?, y$....., 2022-01-03 16:55:22))
我为忘记密码创建了自定义路由,但不知何故不起作用。
Route::post('/forgot-password', function (Request $request) {
$request->validate([
'mail' => ['required', 'email'],
'username' => ['required'],
]);
$status = Password::sendResetLink(
$request->only('username', 'mail')
);
return $status === Password::RESET_LINK_SENT
? back()->with(['status' => __($status)])
: back()->withErrors(['email' => __($status)]);
})->middleware('guest')->name('password.mail');````
在fortify.php中我设置了'email' => 'mail',
但是没有区别。
也许我做了一些非常愚蠢的事情,但我是 Laravel.
的新手
那么我该如何解决这个问题?
无法将邮件列重命名为电子邮件,在用户 table 中创建第二个名为电子邮件且内容相同的列是愚蠢的。
此致。
您应该覆盖您尝试使用的模型上的 getEmailForPasswordReset
方法。令牌存储库将通过在模型上调用 getEmailForPasswordReset
向模型询问电子邮件字段的值。
public function getEmailForPasswordReset()
{
return $this->mail;
}
我有一个数据库,其中包含用户 table 的名为 mail
的列,但在 Laravel 中是 email
。我现在的问题是忘记密码功能。
我总是会收到以下错误:
SQLSTATE[23000]: Integrity constraint violation:
1048 Column 'email' cannot be null
(SQL: insert into `password_resets` (`email`, `token`, `created_at`) values
(?, y$....., 2022-01-03 16:55:22))
我为忘记密码创建了自定义路由,但不知何故不起作用。
Route::post('/forgot-password', function (Request $request) {
$request->validate([
'mail' => ['required', 'email'],
'username' => ['required'],
]);
$status = Password::sendResetLink(
$request->only('username', 'mail')
);
return $status === Password::RESET_LINK_SENT
? back()->with(['status' => __($status)])
: back()->withErrors(['email' => __($status)]);
})->middleware('guest')->name('password.mail');````
在fortify.php中我设置了'email' => 'mail',
但是没有区别。
也许我做了一些非常愚蠢的事情,但我是 Laravel.
那么我该如何解决这个问题?
无法将邮件列重命名为电子邮件,在用户 table 中创建第二个名为电子邮件且内容相同的列是愚蠢的。
此致。
您应该覆盖您尝试使用的模型上的 getEmailForPasswordReset
方法。令牌存储库将通过在模型上调用 getEmailForPasswordReset
向模型询问电子邮件字段的值。
public function getEmailForPasswordReset()
{
return $this->mail;
}