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 :

Changer de base de manière dynamique et à la volée


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé 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
    Par défaut Changer de base de manière dynamique et à la volée
    Bonjour à tous,

    Après 2 jours de recherches infructueuses je me décide à vous consulter concernant mon problème car ce que je veux faire ne me semble pas si compliqué ni complètement extravagant mais je n'arrive pas à trouver de pistes qui pourraient m'aider.

    Je vous expose mon problème.
    J'ai une base de donnée centrale dans laquelle je stock mes utilisateurs et pour chacun d'eux le nom de la base client sur laquelle l'application de se connecter ensuite pour avoir accès aux données de l'utilisateur en question.

    Donc je configure dans mon config.yml l'accès à la base centrale qui est toujours le même.
    Je fait une requête sur cette base pour récupérer pour récupérer les infos de connexion à la base client.

    J'ai réussi au cours de mes investigations à trouver un script qui permet de passer d'une base à une autre. J'ai donc créé un service avec ce script afin de pouvoir l'appeler dès que j'en ai besoin. Car malheureusement le changement de connexion ne persiste pas il faut donc faire appel au service avant chaque appel à mon entitymanager.

    La ou ça se complique c'est que je souhaite utiliser le FOSUserBundle pour la gestion de mes utilisateurs mais que je ne peux pas faire appel a mon service avant de lancer la vérification de l'utilisateur. Ce qui fait que lorsque je remplis mon formulaire de login il fait la recherche sur la base centrale alors que les mots de passe utilisateurs sont stockés dans les bases client.

    J'ai aussi vu que l'on pouvait surcharger les méthodes de connexion en les déplaçant directement dans le repository de mon entité utilisateur (notamment la méthode : "loadUserByUsername()").
    Mais je n'arrive pas à appeler mon service de switch de base depuis un repository.

    Alors mes questions sont les suivantes :
    Comment faire en sorte que la connexion soit conservé une fois que la bascule a été faite une première fois ?
    OU
    Comment appeler un service dans un repository ?
    OU
    Une autre idée ?

    Merci d'avance.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    tu peux faire autant de connexion que tu veux sur différentes bases, il suffit de bien mettre tout ça sous connections, donc pas besion de "script" ni rien

  3. #3
    Membre éprouvé 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
    Par défaut
    Oui je sais bien mais je peux avoir des centaines de base clients et je ne connait pas leur nom à l'avance.
    Mon idée était de ne pas avoir un fichier config.yml qui soit immense et de ne pas avoir besoin de le modifier à chaque fois qu'une nouvelle base client sera crée, ce qui risque d'arriver très fréquemment.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    comment sont crées les bases ?

  5. #5
    Membre éprouvé 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
    Par défaut
    et bien en fait chaque nouveau client sera créé via une "super admin" qui sera calé sur la base centrale.

    Une fois que le nouveau client sera créé une base sera générée suivant un modèle. Mais pour l'instant ce processus n'est pas en place. Chaque base est générée à la main.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    si chaque base est créer a la main, autant change le config.yml à la main aussi, de tout facon t'en que y'a pas d'automatisation tu pourras pas faire grand chose

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/08/2010, 15h51
  2. Réponses: 13
    Dernier message: 25/01/2007, 17h20
  3. Réponses: 1
    Dernier message: 11/01/2007, 22h57
  4. [JTable] Changer les colonnes de manière dynamique
    Par gg2laba dans le forum Composants
    Réponses: 3
    Dernier message: 03/10/2005, 23h39
  5. Réponses: 8
    Dernier message: 17/10/2004, 15h34

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