Laravel 5.6+MongoDB注册加密密码报错:间接修改重载属性无效
问题解决:Indirect modification of overloaded property App\User::$attribute has no effect
嘿,这个问题其实是个容易忽略的拼写小失误!
你在User模型的密码修改器里写错了属性名——你用了单数的$this->attribute,但Laravel模型中存储属性的数组是复数形式的$this->attributes。
当你尝试修改$this->attribute['password']时,由于这个单数属性并不存在,PHP会将其识别为一个重载的动态属性,这就触发了「间接修改重载属性无效」的错误提示。
错误的写法:
public function setPasswordAttribute($value){ $this->attribute['password'] = bcrypt($value); }
修正后的正确代码:
public function setPasswordAttribute($value){ $this->attributes['password'] = bcrypt($value); }
修改完成后,当你在AuthController里调用User::create($request->all())时,Laravel会自动触发setPasswordAttribute修改器,把请求中的明文密码加密后存入数据库,就能正常完成用户注册流程啦!
内容的提问来源于stack exchange,提问作者Gerard Luque
相关产品推荐
相关产品推荐

