【发布时间】:2019-10-19 22:29:32
【问题描述】:
在我使用 laravel 的项目中,对于其他人的问题,我有两个表:
用户: id, password, remember_token, person_id
人: id, name, email
问题是恢复密码所需的数据在两个不同的表中。
在 ForgotPasswordController.php 文件中
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
use Illuminate\Http\Request;
use App\User;
use App\Persona;
class ForgotPasswordController extends Controller
{
use SendsPasswordResetEmails;
public function sendResetLinkEmail(Request $request)
{
$this->validate($request, ['email' => 'required|email']);
$response = $this->broker()->sendResetLink(
$request->only('email')
);
switch ($response) {
case \Password::INVALID_USER:
return response()->error($response, 422);
break;
case \Password::INVALID_PASSWORD:
return response()->error($response, 422);
break;
case \Password::INVALID_TOKEN:
return response()->error($response, 422);
break;
default:
return response()->success($response, 200);
}
}
}
显然我收到了一个找不到电子邮件列的错误。
SQLSTATE[42703]:未定义列:7 错误:列“电子邮件”没有 存在 LINE 1: select * from "users" where "email" = $1 limit 1 ^ (SQL: select * from "users" where "email" = email@email.es limit 1)
我终于通过帮助我解决这个问题来解决它。 Laravel 5.3 Password Broker Customization
【问题讨论】:
-
您的报价有误。你在哪里生成这个 SQL?
-
这个sql查询是laravel使用生成的,我不做。我已经更正了帖子的引用
-
Laravel 期望
email字段在您的users表中。您正在做一些不寻常的事情,并且需要自定义内置功能来解决这个问题。 -
是的,这就是问题,我必须自定义什么才能正常工作?
-
我终于通过帮助我解决了这个问题来解决它。 stackoverflow.com/questions/40532296/…
标签: php laravel laravel-5.8