connexion à deux bases de données différentes avec Zend Framework
J'ai ici une de taille moyenne site intranet, qui est entièrement écrit en Zend FW. La base de données de l'intranet est situé sur un autre serveur. Maintenant, j'ai besoin d'étendre l'intranet avec quelques nouvelles fonctionnalités. Pour ce faire, j'ai besoin de vous connecter à une autre base de données sur le même serveur (et même SGBD).
La question est maintenant de savoir: Quelle est la meilleure façon de le faire? Dois-je créer un nouvel objet Zend_Config et une nouvelle Zend_Db_Adapter? Ou dois-je utiliser l'existant, et d'essayer avec la fonction "utiliser otherdbname;" instruction pour se connecter au sein de la même session, pour la nouvelle base de données?
Ou est-il une meilleure façon de le faire?
source d'informationauteur Raffael Luthiger
Vous devez vous connecter pour publier un commentaire.
Une option est de vous inscrire en 2 base de données gère à partir de l'intérieur de votre
bootstrap.php
un pour chaque connexion. E. g.:Dans vos contrôleurs (par exemple):
Je pense que cela dépend de la façon dont vous devez souvent changer de base de données. À l'aide de deux adaptateurs fera la différence entre les deux bases de données de façon plus propre et serait ma préférence.
Lorsque vous passez des bases de données sur votre carte, vous allez sûrement avoir un moment difficile de traçage de la base de données est actuellement active - gardez à l'esprit que votre connexion de base de données est probablement un singleton qui est passée entre les modules, leurs contrôleurs et leurs modèles respectifs.
La troisième option serait d'utiliser des noms de table tout au long de votre application. MySQL fournit par exemple le
db_name.table_name
-syntaxe de l'adresse de tables de bases de données différentes sur le même serveur. La valeur par défaut de la base de données n'est pas question de cette façon etZend_Db_Table
etZend_Db_Select
l'appui de cette syntaxe hors de la boîte.EDIT:
Je dois ajouter que l'option 2 et 3 ne fonctionnera que si votre base de données de l'utilisateur a les droits d'accès appropriés sur toutes les bases de données, les tables et les colonnes que vous souhaitez utiliser. L'Option 1 sera la seule option qui reste, si votre base de données requiert un nom d'utilisateur différent sur chacun de vos bases de données.
J'utilise cette Config.ini vous pouvez vous pouvez aussi l'utiliser :
vous pouvez l'utiliser pour la production , les tests et le développement de l'environnement, si vous avez besoin de vous connecter à une autre base de données en même temps, vous pouvez doubler la config de base de données comme :
ensuite, vous pouvez le charger sur l'bootstap ou à l'endroit où vous le souhaitez 🙂
et il est aussi facile
l'un de la meilleure façon est:
créer un nouveau modèle de table pour une table de base de données:
De ce que j'ai trouvé iciafin d'utiliser différentes bases de données dans une application Zend, vous pouvez suivre l'une de ces deux façons, en fonction de vos besoins:
- Ayant le même hôte/l'utilisateur pour les deux bases de données
Vous pouvez spécifier la base de données que vous souhaitez utiliser l'initialisation de la
$_schema
variable dans le modèle, comme suit:- Ayant différents hôte/l'utilisateur pour les deux bases de données
Dans
application.ini
vous devez écrire la configuration pour les deux bases de données comme suit:L'ajout de la
_initDbRegistry
bloc d'amorçage permettra d'ajouter des bases de données pour le registre, de sorte que vous serez en mesure d'y accéder:Maintenant, vous pouvez spécifier la carte que vous souhaitez utiliser pour chaque modèle, comme suit: