#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()
функции