如何使laravel Password :: Reset使用用户ID而不是电子邮件?

Sup*_*fly 5 php laravel laravel-4

我正在尝试在Laravel中重设用户密码,但是Password :: reset方法正在password_tokens表中查找电子邮件列,而不是id列。

$credentials = ['password' => Input::get('password'),
    'id' => $currentUser->id,
    'token' => Input::get('token'),
    'password_confirmation' => Input::get('password_confirmation')];

return Password::reset($credentials, function($user, $password)
{
    $user->password = Hash::make($password);
    $user->save();

    return Redirect::to('public_site.admin')->with('flash', 'Your password has been reset');
});
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

SQLSTATE [42S22]:找不到列:1054“ where子句”中的未知列“ email”(SQL:select * from password_tokenswhere email= peter@email.com and token= cVh08P70IfWrni2PCxP0KXGyihhc3d2u限制1)

我尚未通过$ credentials传递电子邮件,并且不确定在哪里可以设置为使用用户ID(id是用户表的主键,而user_id是password_tokens中的外键)。

我可以在应用程序的其他部分成功使用Auth,并且也可以使用来查找用户User::find($userId);,所以我认为User模型的设置方式没有问题。

Password :: reset在哪里寻找查询条件?它是用户模型的一部分,还是基于它收到的输入,还是在某个地方的配置文件中?

bar*_*rth 0

这是因为密码重置无论如何都需要电子邮件,否则您将如何发送密码?由于电子邮件必须与 ID 一样唯一,因此他们不遗余力地通过 ID 检查来实现这一点,因为电子邮件比较也同样有效。

为什么需要它作为 ID?