为电子邮件使用自定义列名时出现未知列错误 - 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;
}