Не удается обновить несколько записей в таблицах с помощью hasMany в CakePHP

#cakephp #cakephp-2.0 #cakephp-2.3 #cakephp-2.1

#cakephp #cakephp-2.0 #cakephp-2.3 #cakephp-2.1

Вопрос:

У меня есть таблица «Topic», которая связана с «Post» с помощью hasMany в модели.

Я не могу понять, как обновить две таблицы одновременно.

Это мой $this->запрос-> данные

 Array
(
  [Topic] => Array
      (
          [id] => 1
          [topic_title] => This is my topic
      )

  [Post] => Array
      (
          [1] => Array
              (
                  [id] => 1
                  [title] => Blah
                  [message] => My message
              )

          [2] => Array
              (
                  [id] => 2
                  [title] => Second Blah
                  [message] => Second My message
              )

      )

)
  

Я пытался сделать так :

 $this->Topic->save($this->request->data);

$this->loadmodel('Post');

$this->Post->updateAll($this->request->data, array('Post.topic_id' => $id));
  

Это явно неправильный подход, однако я изо всех сил пытаюсь найти хороший способ сделать это.

Ответ №1:

Вы должны использовать saveAssociated

 $this->Topic->saveAssociated($this->request->data);
  

Ответ №2:

Если вы используете $this->Topic->save($this->request->data) его, он будет пытаться сохранить массив [Topic] только внутри вашего массива данных.

Вы можете использовать $this->Topic->saveAssociated($this->request->data) или $this->Topic->saveAll($this->request->data) для сохранения для применения к другим массивам внутри вашего массива данных. saveAll() Функция охватывает оба saveAssociated() и saveMany() сохраняет, хотя в руководстве CakePHP предлагается использовать любую из них вместо saveAll() функции