我使用的是用户表列名(EMAIL,PASSWORD)。如果我将小字母改为列名(电子邮件),效果很好。要更改列名称(电子邮件),因为上限不起作用,请给我任何建议。我可以登录,但忘记密码不起作用。请给任何建议
我在控制器中的功能:
public function postEmail(Request $request)
{
$this->validate($request, array('email' => 'required|email'));
$response = $this->passwords->sendResetLink($request->only('EMAIL'), function ($m) {
$m->subject($this->getEmailSubject());
});
switch ($response) {
case PasswordBroker::RESET_LINK_SENT:
return redirect()->back()->with('status', trans($response));
case PasswordBroker::INVALID_USER:
return redirect()->back()->withErrors(array('email' => trans($response)));
}
}
我在页面中得到这个错误:
QueryException in Connection.php line 624:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'email' cannot be null (SQL: insert into `password_resets` (`email`, `token`,`created_at`)
values (, 5d2b40143e084824402984c81cdfaa64264328bdc9c6d73cf80e1a1aa773d0cc, 2016-07-29 09:52:40))
表单中的电子邮件字段被称为Email,因此您的验证将失败,因为它会检查请求中是否存在电子邮件字段。
对于启动,请更换
$this->validate($request, array('email' => 'required|email'));
带有
$this->validate($request, array('EMAIL' => 'required|email'));
让我知道它是否已经工作,或者还有其他错误,我会在接下来的步骤中更新答案。一定要发布你得到的错误。
为了存储密码重置令牌,您需要告诉Laravel如何检索用户的电子邮件。您可以将以下方法添加到用户模型中:
public function getEmailForPasswordReset()
{
return $this->EMAIL;
}