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

Gestire il database

La gestione dei database. Gli elementi connection, command, datareader e transcation per manipolare i dati senza l'ausilio dei model.
La gestione dei database. Gli elementi connection, command, datareader e transcation per manipolare i dati senza l'ausilio dei model.
Link copiato negli appunti

Yii consente di accedere a molti database come MySql, Postgree, MsSql e tutti quelli supportati da PDO. Infatti il Data Access Object (DAO) di Yii si basa appunto su PDO. Fondamentalmente ci sono 4 classi che compongono DAO. Queste sono:

  • CDbConnection: rappresenta la connessione al database
  • CDbCommand: rappresenta una query sql
  • CDbDataReader: rappresenta un result set
  • CDbTranscation: rappresenta una transazione sul database

La connessione al database

Per effettuare una connessione al database è sufficiente utilizzare la seguente riga di codice:

$connection=new CDbConnection($dsn,$username,$password);

La variabile $dsn varia a seconda del database a cui ci colleghiamo. Nel caso di MySql, il database più utilizzato in accoppiata col PHP, il valore è nel formato:

mysql:host=localhost;dbname=mio database

Istanziando la classe connection abbiamo a disposizione una connessione con il database. Per chiudere la connessione è possibile utilizzare il comando

$connection->active=false;

La classe CdbConnection estende la classe base CApplicationComponent. Per questo motivo, all'interno del file di configurazione, trovavamo il codice che definisce la nostra connessione. Nella lista dei componenti attivi infatti, è presente db. Il motivo è che in questo modo in qualsiasi punto dell'applicazione è sempre disponibile una connessione attiva con il database.

Per accedere alla connessione definita nel file di configurazione si può utilizzare la seguente sintassi:

$db = Yii::app()->db;

Le operazioni Crud

Dopo aver visto come connetterci al database è giunto il momento di vedere come effettuare le operazioni CRUD su di esso. Il primo passo è quello di creare una istanza dell' oggetto CDbCommand scrivendo:

$command=$connection->createCommand($sql);

Se la nostra query è di tipo insert, update o delete allora è sufficiente invocare il metodo execute che restituisce il numero di righe interessate dalla query:

$rowCount=$command->execute();

Se passiamo una query di selezione allora utilizziamo i seguenti metodi:

$dataReader=$command->query();
$rows=$command->queryAll();

La differenza dei due metodi consiste nel fatto che, nel primo caso, otterremo un dataReader come risultato mentre nel secondo un array contenente i dati. Per recuperare i dati da un dataReader si utilizza il codice che segue:

while (($row=$dataReader->read())!==false)
	{
	[...]
	}

oppure

foreach ($dataReader as $row)
	{
	[...]
	}

E per finire usiamo

$rows=$dataReader->readAll();

per includere tutto il contenuto del dataReader in un array.

Le transazioni

Prima di concludere la breve panoramica su DAO, dobbiamo chiarire in che modo Yii utilizza le transazioni. Come abbiamo detto DAO si appoggia su PDO quindi valgono gli stessi criteri. Una transazione può essere iniziata con

$transaction=$connection->beginTransaction();

per effettuare il commit:

$transaction->commit();

mentre per il rollBack:

$transaction->rollBack();

Ti consigliamo anche