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

ORM PHP Discussion :

double bases de données


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 80
    Par défaut double bases de données
    Bonjour à tous et meilleurs vœux 2011!!

    Voilà pour bien débuter l'année, j'ai un petit problème comme mise en bouche pour vous!
    Je travaille sur un projet et je dois faire une traduction en anglais (j'ai pas utilisé la l’internationalisation proposé par symfony) j'ai carrément crée un nouveau dossier sur mon serveur identique à mon projet mais avec le contenu en anglais et sa propre base de données en anglais.
    Seulement voila le problème mes utilisateurs sont enregistrer sur la base de données en français et lorsqu'il veulent basculer sur l'environnement anglophone il n'y ont pas les droits (normal ils ne sont pas à jour sur la base de données anglais).
    Voilà ma question, est ce qu'il est possible d'utiliser deux bases de données sur un projet et si oui:
    - comment le mettre en place?
    - une fois que je l'aurais mis en place comment est ce que je fais pour que sur mon projet en anglais les utilisateurs soit ceux de ma base en français!

    PS: j'utilise le plugin doctrineguardplugin pour la gestion des utilisateurs!

    Merci pour votre aide!
    Bonne année!

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Le plus simple serait d'utiliser les outils intégrés d'internationalisation.

    Si non, je pense que tu aurais intérêt à utiliser 3 bases, mais seulement deux déclarées dans le shema. Ta base spécial langue et une base commune où tu retrouveras, entre autres tables, celles de sfGuard.

    Il faut savoir que tu peux envoyer toutes les demandes de sauvegarde d'enregistrement avec un paramètre $con, qui va correspondre à la connexion à utiliser, si trouve notamment le nom de la base. Il conviendra donc :
    • soit d'initialisée une connexion pour ton besoin et de la passer en argument
    • soit de modifier le code qui permet à doctrine de récupérer la connexion pour qu'il tienne compte de la bonne (aucune idée des moyens à utiliser ni des probabilités de réussite et de difficulté).

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 80
    Par défaut
    Quel est la partie du code du plugin doctrineguardplugin qui s'occupe de selectionner la base de données contenant la table sfguarduser??

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Il n'y a pas de partie de code particulière dans le plugin qui gère la base des tables.

    Le shema.yml du plugin crée les tables dans la première base gérée doctrine. Et le plugin les y prend. Il n'est pas possible, sans le réécrire, de changer cette base.

    Ce qui, dans ton cas, n'est pas grave, tu utilises la première base comme base par défaut et la deuxième, elle va varier en fonction de la langue.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juillet 2007
    Messages : 12
    Par défaut
    voici un exemple de database.yml pour une utilisatin de base multiple

    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
     
    base1:
        class: sfDoctrineDatabase
        param:
          dsn: 'pgsql:host=;dbname='
          username: ''
          password: ''
          encoding: 
     
    base2:
         class: sfDoctrineDatabase
        param:
          dsn: 'pgsql:host=;dbname='
          username: ''
          password: ''
          encoding:
    voici a quoi doit ressembler ton schema.yml pour taper en fonction des base sur chacune des tables (attention de ne pas donner des noms identiques)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TableBase1:
      connection: base1
      columns: .......................
     
    TableBase2:
      connection: base2
      columns: .....................
    et puis tu gènéres avec le build-model et tous les paramètres qui vont bien --models --forms --filters

  6. #6
    Membre éprouvé

    Homme Profil pro
    Software Engineer
    Inscrit en
    Août 2004
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 173
    Par défaut
    Attention, l'utilisation de plusieurs bases avec doctrine fonctionne mal.
    Dans certains cas doctrine va chercher les données dans la mauvaise connexion, et donc ne trouve jamais la table (notamment admin generator le plus fréquente), voir http://trac.symfony-project.org/ticket/7689

    Ce bug n'a jamais été corrigé officiellement, il existe sur le ticket ci-dessus un patch "bidouille" qui corrige le problème (intégration de l'autoload de symfony dans le core de doctrine) mais ça nécessite de modifier doctrine directement .

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/11/2010, 01h32
  2. [PHP 5.3] Double insertion dans la base de données
    Par thebarbarius dans le forum Langage
    Réponses: 6
    Dernier message: 18/03/2010, 13h39
  3. Réponses: 1
    Dernier message: 04/12/2009, 01h15
  4. [XL-2003] générer plusieurs graphiques doubles axes Y avec base de données variable
    Par didyvine dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/07/2009, 13h44
  5. Réponses: 1
    Dernier message: 22/04/2008, 21h20

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