Bonjour à tous,

Je cherche à changer de base de données en fonction de l'URL (même code, mais sur 2 bases différentes) :
fr.monsite.com => fr_database en.monsite.com => en_database

J'ai suivi ce tuto et créé 2 bases, avec 2 EM.

Ca fonctionne bien, j'arrive à changer de base selon l'URL dans mon controlleur via
$em = $doctrine->getManager($subdomain.'_manager');

Sauf que j'aimerai charger le bon EntityManager globalement (pas dans chaque controlleur).

Une idée ?

Merci d'avance.

Franck.

3 réponses


Bonjour Franck,

Comment fais-tu les migrations avec deux tables ?
J'ai aussi deux tables dans mon projet, mais impossible de faire les migrations.

Pour essayer de t'aider, je ne comprends pas où tu veux charger ton EntityManager.
Tu peux charger les deux au même endroit en modifiant le subdomain, mais tout dépend de comment tu le détermines.

kyfr59
Auteur

Bonjour Luc,

Merci pour ta réponse.

Pour les migrations avec plusieurs tables, tu peux passer un paramètre --em pour préciser l'entity manager à prendre en compte.
php bin/console doctrine:migrations:migrate --em=customer

Mon problème est que je ne sais pas ou placer le code qui va charger le bon EM en fonction de l'URL.

Bonjour Franck,

Je suis désolé pour mon retard et je te remercie de m'avoir aidé.

Pour tout te dire, il fallait simplement que je respecte une étape intermédiaire, juste avant de faire la migration :

""" php bin/console doctrine:migrations:diff --em=customer """

Ensuite :

""" php bin/console doctrine:migrations:migrate --em=customer """

Pour te répondre, et j'espère qu'il n'est pas trop tard, une classe doit avoir un seul et unique rôle.

Je te conseille de créer une classe qui aura pour rôle de charger le bon EM en fonction de l'URL.

Ainsi, si tu as besoin d'un autre EM, tu pourras modifier cela simplement.