Utilizzare CakePHP 2.2.2 con database PostgreSQL

Utilizzare CakePHP 2.2.2 con database PostgreSQLHo testato in maniera approfondita l’ultima release di CakePHP, facendo il salto dalla versione 1.3 alla 2.2.2.
Un bel po’ di cose sono cambiate, in meglio per fortuna. Nel complesso mi è sembrata più performante e il bake shell ancora più comodo di come lo ricordavo.
Gli unici aspetti negativi di questo ultimo rilascio secondo me sono due. Il primo: la funzione __() non ha più l’opzione echo ma sempre e soltanto return. Il secondo invece è che SimpleTest è stato rimpiazzato da PHPUnit. Una bella seccatura dover riscrivere tutti i test custom che ci si era creato in precedenza.

Volevo comunque segnalarvi una chicca: CakePHP supporta egregiamente PostgreSQL, ci si può connettere tranquillamente via UNIX domain socket. Per fare questo però sappiamo che dobbiamo togliere le indicazioni dell’host dalla stringa di connessione. Esempio di stringa:
$dbh = new PDO('pgsql:user=exampleuser dbname=exampledb password=examplepass');
Per ottenere questo risultato non ho fatto altro che andare a prendere il file lib\Cake\Model\Datasource\Database\Postgres.php
e ne ho creato una copia in
app\Model\Datasource\Database\Postgres.php.
Dopodichè ho modificato secondo i miei bisogni la stringa di connessione contenuta nella funzione
public function connect() cambiandola da così

$this->_connection = new PDO(
"pgsql:host={$config['host']};port={$config['port']};dbname={$config['database']}",
$config['login'],
$config['password'],
$flags
);

a così:

$this->_connection = new PDO(
"pgsql:dbname={$config['database']}",
$config['login'],
$config['password'],
$flags
);

Rispondi