Я не могу обновить внешний ключ дочернего элемента в hasMany отношения в функции редактирования родителя. Я проверил данные, и я определенно передаю другой родительский идентификатор, но независимо от того, что я пытаюсь, он устанавливает родительский идентификатор как идентификатор родителя, который я редактирую.CakePHP: не удается обновить внешний ключ для hasMany дочерних элементов в родительском
Вот что данные $_POST
дают мне:
{
"Parent" => {
"id" => "4",
"name" => "Parent"
},
"Child" => {
"1" => {
"parent_id" => "0",
"id" => "1"
}
}
}
Когда я смотрю, на котором SQL запроса он работает, и я получаю это:
UPDATE `cakephp`.`children` SET `parent_id` = 4, `id` = 1,
`modified` = '2014-01-31 15:37:27' WHERE `cakephp`.`children`.`id` = '1'
Я использую функция saveAll()
, но я готов попробовать другие методы. Есть ли способ обойти это? Я искал вокруг, но, похоже, не нашел исправления для моей проблемы.
Моя основная цель - удалить ассоциацию от родителя, но все равно сохранить данные обоим. Это позволит мне освободить ребенка, чтобы он был связан с другими моделями.
Пожалуйста, дайте мне знать, если мне не хватает каких-либо важных деталей!
Это устанавливает родительский идентификатор для чего-то другого, кроме исходного родительского идентификатора, однако теперь он создает новый пустой родительский элемент и вместо этого устанавливает идентификатор. Я пробовал использовать значения, такие как 0, -1 и null, все тот же результат. – TurboUser
@TurboUser проверить отредактированный ответ! – Anubhav
Рекурсивный = -1, похоже, не работает для ребенка, но это не большая проблема. Похоже, мне пришлось бы переопределить функцию updateAll() http://blog.pepa.info/php-html-css/cakephp/getting-rid-of-joins-in-updateall-query/ – TurboUser