flosy.info | Développement Web, Open source …

Mar/11

26

Utilisation de plusieurs bases de données dans symfony

Pour un projet je souhaite pouvoir me connecter à 2 bases de données différentes. Voyons comment faire cela avec Doctrine.

Configuration des bases de données

Nous définissons une connexion pour chacune des bases dans le fichier /config/databases.yml.

all:
  main:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:host=localhost;dbname=base_main'
      username: user
      password: password

  subsidiary:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:host=localhost;dbname=base_subsidiary'
      username: user
      password: password

Définition du modèle

Nous créons ensuite notre schéma en précisant pour chaque classe du modèle la connexion à utiliser. Voici un exemple de schéma :

Utilisateur:
  connection: main
  columns:
    id:         { type: integer, primary: true, autoincrement: true }
    nom:        { type: string(255) }
    
Groupe:
  connection: subsidiary
  columns:
    id:         { type: integer, primary: true, autoincrement: true }
    nom:        { type: string(255) }

La commande de création du modèle va ajouter les tables dans leur base respective.

$ symfony doctrine:build --all

Vous noterez dans les classes de base du modèle la référence à la connexion.

1
2
3
< ?php
  // Connection Component Binding
  Doctrine_Manager::getInstance()->bindComponent('Groupe', 'subsidiary');

À partir de maintenant les données seront enregistrées dans les 2 bases de données.

Related Posts:

·

No comments yet.

Leave a Reply

 

<<

>>

Theme Design by devolux.nh2.me