在一个项目中,我使用的是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错误:列“电子邮件”没有 存在第1行:从“用户”中选择*,其中“电子邮件” = $ 1限制1 ^(SQL: 从“用户”中选择*,其中“电子邮件” = email@email.es限制1)
我终于通过帮助我解决了这个问题。 Laravel 5.3 Password Broker Customization
答案 0 :(得分:0)
您没有使用https://d.android.com/r/tools/task-configuration-avoidance来将人与用户合并。
尝试在迁移(播种,模型等)中将id_person
替换为person_id