繁体   English   中英

Laravel 5.4:API密码重置更新或创建

[英]Laravel 5.4: api password reset updateOrCreate

Laravel 5.4,PHP 5.6尝试updateOrCreate密码重置令牌她是我的尝试。

$passwordReset = ( new PasswordReset )->updateOrCreate(
                ['email' => $user->email],
                [
                    'email' => $user->email,
                    'token' => str_random(60)
                ]
            );

如果用户第一次重设密码,创建工作正常,但是在更新时,我得到了这个QueryException

SQLSTATE [42S22]:找不到列:1054“ where子句”中的未知列“ id”(SQL:更新password_resets设置token = 8ALMd5schQR9KNQ5kIt89bwr5lu5mb5G5D1YLpkittNiz5N5Z5ZxCcyhYaBp0X97,其中id为null)

您的代码的问题在于laravel将主键预定义为id。

您有3个解决方案:

1)您可以添加一个id列,自动递增并使其成为您的主键

2)使用简单:

protected $primaryKey = 'email'; 

在模型中重新定义您的主键,

3)最后,您自己放置一个where子句:

->where('email',$user->email)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM