IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Doctrine2 PHP Discussion :

Connexion plusieurs bases de donneés


Sujet :

Doctrine2 PHP

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2005
    Messages : 94
    Points : 53
    Points
    53
    Par défaut Connexion plusieurs bases de donneés
    Bonjour,
    Je souhaite aller chercher des informations (seulement en lecture seule) dans une seconde base de données, est-ce possible ? il faut déclarer un second entity manager? comment faire pour ne pas que symfony crée de table dans la seconde base de données ? suis-je obligé de récréer toutes les entités de la seconde base sous symfony?

    par avance merci

  2. #2
    Membre habitué Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Points : 173
    Points
    173
    Par défaut
    Oui si tu connait les infos de connexion à ta seconde base de donnée il te suffit de créer un deuxième EntityManager que tu appellera quand tu voudra interroger ta seconde base.
    Pour les entités je suis pas bien sur mais je pense que oui il te faudra les recréer. Je préfère laisser les pro te confirmer cela.
    Et d'après ce que je sais il n'y a pas de raison que symfony crée des tables où que ce soit si tu ne lui en donne pas l'ordre.
    Par défaut lorsque tu utilise les commandes de mises à jour de la base symfony utilise les infos de connexion présentes dans parametre.ini
    Donc il n'y a pas de raison qu'il touche à ta seconde base. Sauf si tu change parametre.ini

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 56
    Points : 60
    Points
    60
    Par défaut
    Bonjour,
    Je me suis également posé cette question et voici un lien vers une réponse qui semble intéressante :
    http://devdream.wordpress.com/2011/0...s-in-symfony2/

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2005
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par anta_res Voir le message
    Oui si tu connait les infos de connexion à ta seconde base de donnée il te suffit de créer un deuxième EntityManager que tu appellera quand tu voudra interroger ta seconde base.
    Pour les entités je suis pas bien sur mais je pense que oui il te faudra les recréer. Je préfère laisser les pro te confirmer cela.
    Et d'après ce que je sais il n'y a pas de raison que symfony crée des tables où que ce soit si tu ne lui en donne pas l'ordre.
    Par défaut lorsque tu utilise les commandes de mises à jour de la base symfony utilise les infos de connexion présentes dans parametre.ini
    Donc il n'y a pas de raison qu'il touche à ta seconde base. Sauf si tu change parametre.ini
    Ok merci pour tes infos, les infos de la seconde base sont récupérées depuis une base de données donc, je suis en train de voir comment créer cette connexion dynamiquement.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2005
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par kiza44 Voir le message
    Bonjour,
    Je me suis également posé cette question et voici un lien vers une réponse qui semble intéressante :
    http://devdream.wordpress.com/2011/0...s-in-symfony2/
    merci je regarde

  6. #6
    Membre habitué Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Points : 173
    Points
    173
    Par défaut
    Alors pour la connexion dynamique je me suis cassé le nez dessus pendant quelque jours donc voila déjà un lien pour te faire un point de départ.
    Il s'agit de la méthode que j'ai utilisé.
    Ça te fait déjà une bonne piste a creuser.
    http://stackoverflow.com/questions/6...ase-connection

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2005
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par anta_res Voir le message
    Alors pour la connexion dynamique je me suis cassé le nez dessus pendant quelque jours donc voila déjà un lien pour te faire un point de départ.
    Il s'agit de la méthode que j'ai utilisé.
    Ça te fait déjà une bonne piste a creuser.
    http://stackoverflow.com/questions/6...ase-connection
    Merci j'arrive à créer et me connecter à un entity manager mais dans une seule et même fonction, une fois sortie de la fonction les infos de connexion sont perdues.. comment as-tu fait pour palier à ce problème?

    merci

  8. #8
    Membre habitué Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Points : 173
    Points
    173
    Par défaut
    En fait une fois que je récupère les infos de connexion depuis la base qui les contient. Je les stocke en session et depuis mon service qui switch la connexion je vérifie si j'ai des infos en session.
    Si j'ai des infos je les utilise sinon je les récupère depuis la base.
    Par contre il faut faire appel a ton service de connexion au début de chaque fonction qui a besoin de la connexion dynamique.

    Je n'ai pas trouvé le moyen de faire persister cette connexion d'une méthode à une autre ou d'un contrôleur à un autre. D’ailleurs si jamais toi ou quelqu'un d'autre trouve la solution je suis preneur .

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2005
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par anta_res Voir le message
    En fait une fois que je récupère les infos de connexion depuis la base qui les contient. Je les stocke en session et depuis mon service qui switch la connexion je vérifie si j'ai des infos en session.
    Si j'ai des infos je les utilise sinon je les récupère depuis la base.
    Par contre il faut faire appel a ton service de connexion au début de chaque fonction qui a besoin de la connexion dynamique.

    Je n'ai pas trouvé le moyen de faire persister cette connexion d'une méthode à une autre ou d'un contrôleur à un autre. D’ailleurs si jamais toi ou quelqu'un d'autre trouve la solution je suis preneur .
    lol ok merci je suis preneur aussi du coup !
    ça crée pas une connexion à chaque fois? c'est géré proprement ?

  10. #10
    Membre habitué Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Points : 173
    Points
    173
    Par défaut
    Dans le script qu'il montre sur le lien que je t'ai filé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class YourService extends ContainerAware
    { 
     
      public function switchDatabase($dbName, $dbUser, $dbPass) 
      {
        $connection = $this->container->get(sprintf('doctrine.dbal.%s_connection', 'dynamic_conn'));
        $connection->close(); // for sure ;)
     
        $refConn = new \ReflectionObject($connection);
        $refParams = $refConn->getProperty('_params');
        $refParams->setAccessible('public'); //we have to change it for a moment
     
        $params = $refParams->getValue($connection);
        $params['dbname'] = $dbName;
        $params['user'] = $dbUser;
        $params['password'] = $dbPass;
     
        $refParams->setAccessible('private');
        $refParams->setValue($connection, $params);
     
        $this->container->get('doctrine')->resetEntityMamager('dynamic_manager'); // for sure (unless you like broken transactions)
      }
    }
    Tu as un $connection->close(); au début. Je suppose donc que ça n'ouvre pas que nouvelle connexion à chaque fois.
    Après, te dire si c'est parfaitement propre je ne saurai te l'assurer. Des gens meilleurs que moi sur symfony pourraient nous le dire.
    Pour ma part cela fonctionne plutôt bien.

  11. #11
    Membre du Club
    Inscrit en
    Janvier 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2005
    Messages : 94
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par anta_res Voir le message
    Dans le script qu'il montre sur le lien que je t'ai filé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class YourService extends ContainerAware
    { 
     
      public function switchDatabase($dbName, $dbUser, $dbPass) 
      {
        $connection = $this->container->get(sprintf('doctrine.dbal.%s_connection', 'dynamic_conn'));
        $connection->close(); // for sure ;)
     
        $refConn = new \ReflectionObject($connection);
        $refParams = $refConn->getProperty('_params');
        $refParams->setAccessible('public'); //we have to change it for a moment
     
        $params = $refParams->getValue($connection);
        $params['dbname'] = $dbName;
        $params['user'] = $dbUser;
        $params['password'] = $dbPass;
     
        $refParams->setAccessible('private');
        $refParams->setValue($connection, $params);
     
        $this->container->get('doctrine')->resetEntityMamager('dynamic_manager'); // for sure (unless you like broken transactions)
      }
    }
    Tu as un $connection->close(); au début. Je suppose donc que ça n'ouvre pas que nouvelle connexion à chaque fois.
    Après, te dire si c'est parfaitement propre je ne saurai te l'assurer. Des gens meilleurs que moi sur symfony pourraient nous le dire.
    Pour ma part cela fonctionne plutôt bien.
    Ok super merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] [MySQL]Conception de connexion a plusieurs bases de données
    Par Emyleen dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 08/12/2011, 15h44
  2. [MySQL] connexion à plusieur base de donnée d'une façon dynamique
    Par patric1014 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 22/05/2010, 11h24
  3. [MySQL] [MySQLi] Connexion à plusieurs bases de données
    Par CocoLeNain dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/09/2008, 14h21
  4. Connexion à plusieurs bases de données
    Par Jean-Claude Dusse dans le forum JDBC
    Réponses: 2
    Dernier message: 25/05/2008, 20h40
  5. connexion a plusieurs bases de données oracle
    Par tarik75 dans le forum JDBC
    Réponses: 1
    Dernier message: 06/07/2005, 13h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo