Domanda

Sto creando più associazioni in una volta sola e ci sono alcuni problemi quando si tratta di salvare.

Ho il seguente codice:

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

Ho sperimentato la formattazione dell'array di dati in diversi modi, anche se riscontro sempre gli stessi problemi. Le voci precedenti vengono spostate quando viene inserita una nuova o viene aggiornata quella corrente.

Potrei semplicemente usare quanto segue anche se ho bisogno di un comportamento per innescare.

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

Modifica: anche $ this- > User- > create (); non sembra fare molto.

È stato utile?

Soluzione

L'IRC ha aiutato a capire cosa non andava, una volta che la chiave unica era impostata su false tutto era in grado di salvare correttamente.

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

Altri suggerimenti

Prova a ripristinare id prima di un nuovo save () , possibilmente su entrambi i modelli:

$this->User->id = null;

Cake decide se aggiornare o inserire voci in base al set id e save () imposta automaticamente un id . Non so perché create () non se ne occupi per te.

Inoltre, se si desidera salvare i dati HABTM, è necessario utilizzare saveAll () anziché save () . Vedi anche questa domanda .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top