Вопрос

Я создаю несколько ассоциаций за один раз, и при сохранении возникает несколько проблем.

У меня есть следующий код:

<?php
foreach($userData as $user) {
    $data = array('User' => array('id' => $user['id']), 'Site' => array('id' => $user['site_id']));
    $this->User->save($data);
}
?>

Я экспериментировал с форматированием массива данных различными способами, хотя всегда сталкивался с одними и теми же проблемами. Либо предыдущие записи перемещаются при вставке новой, либо обновляется текущая.

Я мог бы просто использовать следующее, хотя мне нужно поведение для запуска.

$this->User->SiteUser->save($data);

Редактировать: также $ this- > User- > create (); похоже, мало что делает.

Это было полезно?

Решение

IRC помог понять, что было не так, когда ключ уникальный был установлен в false , все было в состоянии сохранить правильно.

//In the user model
var $hasAndBelongsToMany = array(
  'Site' => array(
    'className' => 'Site',
    'unique' => false
  )
);

Другие советы

Попробуйте сбросить id перед новым save () , возможно, на обеих моделях:

$this->User->id = null;

Cake решает, обновлять или вставлять записи на основе набора id , а save () автоматически устанавливает id . Не уверен, почему create () не позаботится об этом за вас.

Кроме того, если вы хотите сохранить данные HABTM, вам нужно использовать saveAll () вместо save () . Также см. этот вопрос .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top