CakePHP: Нужна помощь с использованием saveField для обновления полей в модели, принадлежащей модели - PullRequest
0 голосов
/ 16 июля 2010

Я пытаюсь обновить пароль для двух разных моделей / таблиц в 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']);
 }
}

КогдаЯ выполняю функцию, таблица пользователей обновляется нормально.Но таблица 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 выполнить обновление с использованием saveField на модели с атрибутом ownTo?

Я пробовал различные способы обращения к user_id до выполнения второгоsaveField, но просто не могу найти выигрышную комбинацию.

Любая помощь очень ценится!

1 Ответ

1 голос
/ 17 июля 2010

Self-ответил!

Не хватало следующего:

$this->User->Gameprofile->id = $this->Auth->user('id');

И в таблице Gameprofile отсутствует столбец id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...