#cakephp #cakephp-2.0 #cakephp-2.3 #cakephp-2.1
#cakephp #cakephp-2.0 #cakephp-2.3 #cakephp-2.1
Вопрос:
У меня есть эта таблица тем, которая связана с таблицей 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->saveAssociated($this->request->data);
Но что, если бы я также хотел иметь возможность добавлять и удалять сообщения в эту тему, как бы я поступил?
Ответ №1:
Сохраняя ту же структуру, вы можете сделать a $this->Topic->saveAssociated($this->request->data);
, и он добавит любые новые ( 'id' => NULL
или отмененные) элементы в массив данных.
Что касается удаления, единственным известным мне случаем одновременного удаления будет HABTM, когда он помечен как 'unique' => true
. В противном случае вам нужно выполнить $this->Post->deleteAll(array('Post.topic_id' => $unwanted_topic_id), false);
Я мог бы подумать о создании нового массива, в котором хранятся те, которые вы хотите удалить, и отправить их в качестве условия для функции deleteAll.
Ответ №2:
Из книги CakePHP 2
delete(integer $id = null, boolean $cascade = true);
Удаляет запись, идентифицированную с помощью $id. По умолчанию также удаляются записи
, зависящие от записи, указанной для удаления.Например, при удалении записи пользователя, которая привязана ко многим записям рецептов (пользовательские рецепты ‘hasMany’ или ‘hasAndBelongsToMany’):
- если для параметра $cascade установлено значение true, связанные записи рецептов также удаляются, если для зависимого значения модели установлено значение true.
- если для параметра $cascade установлено значение false, записи рецептов останутся после удаления пользователя.
Комментарии:
1. Я не понимаю, как удалить только сообщение (или более одного), но сохранить тему. В контроллере у меня есть доступ только к тематической модели.