Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Le operazioni CRUD: update ed insert

Come inserire record nella tabella e come aggiornarli sfruttando il model di Yii
Come inserire record nella tabella e come aggiornarli sfruttando il model di Yii
Link copiato negli appunti

È giunto il momento di entrare nel cuore di active record. In poche parole vediamo ora come è possibile effettuare le operazioni CRUD sfruttando il nostro model.

Cominciamo col dire che ogni singolo campo della tabella è rappresentato nel nostro model da una proprietà. Inserire un record nella tabella è quindi estremamente semplice. Nel nostro caso basta il seguente codice:

$usr = new User();
$usr->user = 'User';
$usr->password = 'Password';
$usr->mail = 'Mail';
$usr->data_iscrizione = '2012-05-22';
$usr->save();

Vi ricordo che il model viene istanziato prevalentemente all'interno del controller. Quindi il codice va riportato in una action del controller stesso. Come si vede, non si fa altro che assegnare ad ogni singolo attributo, che ha l'equivalente campo nella tabella, un valore. Successivamente si richiama il metodo save per memorizzare i dati nella tabella. Il metodo save effettua la validazione sui campi. Una volta inserito il record è possibile recuperare l'id semplicemente leggendo il valore della proprietà dell'id. Nel nostro caso appunto

$usr->id

Per indicare ad Yii che si vuole utilizzare una funzione nativa del database come valore del campo, si ha la necessità di ricorrere ad una classe ausiliare. La classe in questione è CDbExpression.

$user->data_iscrizione = new CDbExpression('now()');

In questo caso Yii è "avvisato" di mettere il contenuto passato come parametro, direttamente nella query Sql. Ovviamente ci sono alcune funzioni del database che richiedono dei parametri. In Yii è stato pensato anche questo.

$usr->password = new CDbExpression('md5(:pwd)', array(":pwd"=>"test"));

Il primo parametro è la funzione che vogliamo richiamare con all'interno i parametri nel formato :nome parametro - i due punti fanno parte della sintassi

Il secondo parametro è la lista dei parametri sotto forma di array associativo nel quale, la chiave corrisponde al parametro, sempre con i due punti, e il valore il valore che vogliamo passare.

Il metodo save restituisce come valore di ritorno un valore booleano. In caso di successo restituisce true mentre in caso contrario restituisce ovviamente false. Testando il metodo save è possibile stabilire se l'inserimento è andato a buon fine. Qualora qualcosa vada storto, è probabile che uno dei campi non sia validato. L'insieme degli errori degli attributi è inserito all'interno di un array che si ottiene richiamando il metodo getErrors. Se si desidera ottenere un errore per uno specifico attributo allora è possibile utilizzare getError('nomeattributo'), senza la s finale.

Yii riesce a distinguere se si tratta di un nuovo inserimento o di un update in base alla proprietà $model->isNewRecord. Se proviamo a creare un istanza del nostro model user e a stampare il valore di $model->isNewRecord otterremo come risultato 1. Questo vuol dire che il model è pronto per inserire il nuovo record.

Dopo aver effettuato un inserimento il valore di questa proprietà è impotato su 0. La chiave primaria è ora valorizzata con il valore che restituisce il database. Se proviamo a caricare il model, con il metodo del controller loadModel($id) o in altro modo, la proprietà $model->isNewRecord restituisce 0. Il sistema è quindi pronto per effettuare l'update della riga. Dopo aver modificato il valore dei campi , e quindi delle proprietà del model corrispondenti, per effettuare l'update è sufficiente richiamare il metodo save. Oltre al metodo save i sono altri metodi per aggiornare i dati nel database.

Ti consigliamo anche