Ho un gestionale e ora sto caricando le procedure per fare l’update degli utenti.
Ogni utente è collegato ad una anagrafica, quindi mi salvo
sia le modifiche del mio model 'Utente'
sia del mio model 'Anagrafica'.
public function actionUpdate($id) {
$model = $this->loadModel($id);
$anagrafica = new Anagrafica();
if (isset($_POST['Utente'])) {
$model->_attributes = $_POST['Utente'];
$model->validate();
$anagrafica->_attributes = $_POST['Anagrafica'];
if ($anagrafica->id!='') $anagrafica->setIsNewRecord (0);
$anagrafica->validate();
$model->anagrafica = $anagrafica;
$anagrafica->save();
if ($model->pass!='' && $model->val_checkpass()) {
if ($model->save() )
$this->redirect(array('view', 'id' => $model->id));
}else if (!$model->pass) {
if ($model->save() )
$this->redirect(array('view', 'id' => $model->id));
}
}
$model->pass = '';
$this->render('update', array(
'model' => $model,
));
}
Allora:
come vedete ho inserito una linea per spiegare a yii se anagrafica è o meno un nuovo record, perchè da solo non faceva l’update, ma tentava di salvare l’anagrafica generando l’errore di duplice primary-key [il problema in create non si crea, salvando tutto come nuovo)
C’è un modo di non mettere questa linea?
Non tanto in questo caso, dove i model sono 2, ma quando gestisco una filiale di una banca d’appoggio modifico il model anagrafica (per il nome della banca, che è una azienda e quindi la salvo tra le anagrafiche), il model filiale, il model banca…
suggerimenti?