Fév
15

Gérer les schémas Postgresql dans Doctrine

Gérer les schemas Postgres avec Doctrine
Après avoir passé pas mal de temps à chercher (notamment en cherchant du coté des DSN de PDO), j’ai enfin trouver une solution simple pour prendre en compte les schémas (autre que public) dans Postgresql avec Doctrine.

Pour cela il vous suffit d’ajouter une ligne de code dans votre fichier où vous initialisez votre connexion

  $options = $this->getOptions();
  $conn = Doctrine_Manager::connection($options['dsn'], 'doctrine');
      	if (isset($options['schema'])) {
      		$conn->execute(sprintf('SET search_path TO %s;', $options['schema']));
      	}

Si vous avez plusieurs schemas à définir vous pouvez les mettre comme ceci (voir doc Search_Path)

$sql = "SET SEARCH_PATH = 'public','cms','review','system','supplier','financial'";

Pour ma part, j’utilise Doctrine avec Zend Framework, j’ai donc mis le schema et le dsn dans un fichier de config afin de pouvoir le modifier facilement.

Extrait de application/configs/application.ini

  ; Doctrine /BDD
autoloaderNamespaces[] = "Doctrine"
resources.doctrine.dsn = 'pgsql://username:password@nomServeur/nomBase'
resources.doctrine.schema = 'nomDeVotreSchema';

Une deuxième solution moins pratique mais qui fonctionne aussi est de mettre dans votre fichier YAML le schema devant le nom de la table comme ceci :

IdentifiantDeVotreTable:
  connection: doctrine
  tableName: nomDeVotreShema.nomDeVotreTable
  columns:
    id:
      type: integer(8)
      fixed: false
      unsigned: false
      primary: true

Ainsi, le schema sera pris en compte dans chacun de vos models générés par Doctrine.



Poster un commentaire

Edito

Bienvenue sur Mémorandom.

Mémorandom est le blog de 2 développeurs web, Appo et Nico.

Vous y trouverez des informations sur différents domaines touchant de près ou de loin au développement web

Tutoriels Yii Framework

Nos derniers articles

Blogs Dev

Liens

Étiquettes