Pregunta

Estoy creando varias asociaciones de una sola vez y hay algunos problemas a la hora de guardar.

Tengo el siguiente código:

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

He experimentado con el formateo de la matriz de datos de diferentes maneras, aunque siempre encuentro los mismos problemas. O bien las entradas anteriores se mueven cuando se inserta una nueva o se actualiza la actual.

Podría usar lo siguiente, aunque necesito un comportamiento para activarlo.

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

Editar: También $ this- > User- > create (); no parece hacer mucho.

¿Fue útil?

Solución

El IRC ayudó a resolver lo que estaba mal, una vez que la tecla única se configuró como falsa , todo se pudo guardar correctamente.

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

Otros consejos

Intente restablecer el id antes de un nuevo save () , posiblemente en ambos modelos:

$this->User->id = null;

Cake decide si actualizar o insertar entradas en función del conjunto id , y save () establece un id automáticamente. No estoy seguro de por qué create () no se encarga de esto por ti.

Además, si desea guardar datos HABTM, debe usar saveAll () en lugar de save () . Consulte también esta pregunta .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top