我正在尝试将密码更新为CakePHP中的两个不同的模型/表。我可以在父模型中更新它,但不能在第二个模型中更新。
Models:
Users (hasOne GameProfile) PK=id
Gameprofiles (belongsTo User) FK=user_id
以下是Users_controller.php中我的函数的精简版:
function updatepass() {
if (!empty($this->data)) {
$this->User->id = $this->Auth->user('id');
$this->User->saveField('sha1password', $this->Auth->password($this->data['User']['newpass']));
$this->User->Gameprofile->saveField('plainpassword', $this->data['User']['newpass']);
}
}
当我执行该函数时,users表会更新。但是gameprofile表没有更新,而是Cake会插入。
SQL Query Log:
1195 Query UPDATE `users` SET `sha1password` = 'e9443e9f5e1a07832aad1b2f84de1a666daf89b5' WHERE `users`.`id` = 30
1195 Query INSERT INTO `gameprofiles` (`plainpassword`) VALUES ('abc')
有没有办法让CakePHP在具有belongsTo属性的模型上使用saveField进行更新?
在执行第二个saveField之前,我尝试了各种方法来引用user_id,但似乎无法找到获胜的组合。
非常感谢任何帮助!
答案 0 :(得分:1)
自回答!
缺少以下内容:
$this->User->Gameprofile->id = $this->Auth->user('id');
并错过了Gameprofile表中的'id'列。