Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonsoir a tous,
Dans mon projet, je doit utiliser deux base de données MySQL. j'ai chercher des tuto et des astuces pour le faire mais j'ai pas trouver.
Alors est ce quelqu'un peut m'indiquer ou je peut trouver la doc pour le faire si non m'aider a le faire?
Merci
IE : j'utilise pour mon projet Zend Framework v1.7.8
Hors ligne
Tu crée deux adapters MySQL et tu les mes sous des noms différents dans le registre (Zend_Registry).
Hors ligne
merci de votre réponse
pouvez vous me donner une squelette car dans le tutorial que j'utilise et pour se connecter a une base de donnée l'auteur fait comme ça :
... // Mise en place de la BDD $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db); ...
merci
Hors ligne
Je me lance dans les réponses maintenant que je commence a bien comprendre le principe de Zend
pour utiliser deux bases de données dans ton fichier de config tu définis les deux accès a ta base
database.adapter = "PDO_MYSQL" database.params.dbname = ******* database.params.username = ****** database.params.password = ****** database.params.host = ******** database2.adapter = "PDO_MYSQL" database2.params.dbname = ******* database2.params.username = ****** database2.params.password = ****** database2.params.host = ********
et dans ton bootstrap
// DATABASE ADAPTER - Enregistrement des informations liées à la base de données $dbAdapter = Zend_Db::factory($configuration->database); $dbAdapter2 = Zend_Db::factory($configuration->database2); // DATABASE TABLE SETUP - Initialisation de l'objet Database Table Adapter Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter); Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter2);
si tu as besoin d'autres précisions, j'essaierai de t'aider
Hors ligne
Hello,
C'est ça
Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);
ou ça :
Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter2);
Si tu fais le 2ème, le 1er ne sert à rien.
A+
Hors ligne
J'ai $dbAdapter pour database et $dbAdapter2 pour database2 je dois donc réaliser les deux actions Zend_Db_Table_Abstract::setDefaultAdapter sinon une seule des deux bases va être prise en compte par Zend non ????
Hors ligne
Hello,
Pour les retrouver partout dans ton code, tu peux les mettre dans le registre. Mais il est bien évident qu'un adaptateur par défaut, il n'y en a, comme son nom l'indique, qu'un seul donc à toi de choisir lequel.
A+
Dernière modification par mikaelkael (27-04-2009 16:10:51)
Hors ligne
ok merci pour les précisions mikaelkael ;-)
Hors ligne
Bonjour et merci pour les réponses,
J'ai résolut le problème par cette méthode :
Dans le bootstrup je charge les paramètres des bases de données et je crée les deux variables "$DB" et "$DB2" dans le registre comme suit :
... $db = Zend_Db::factory($config->db); $registry->set('validdb',$db); $dbp = Zend_Db::factory($config->dbp); $registry->set('publicdb',$dbp); ...
et quand j'ai besoin d'utiliser une des bases je fait comme suit :
... $db = Zend_Registry::get('publicdb'); $authAdapter = new Zend_Auth_Adapter_DbTable($db); $authAdapter->setTableName('f_user'); $authAdapter->setIdentityColumn('f_user_login'); $authAdapter->setCredentialColumn('f_user_pw'); ...
et voila, en fait ça fonctionne mais je ne sait pas si c'est la méthode optimale mais ça résous mon problème
Merci
Hors ligne
Fait plutôt comme ca c'est plus propre:
Tu récupères le registre global:
$registry = Zend_Registry::getInstance();
Puis ta connection:
$db = $registry->get('publicdb');
Pour récupérer une table dans ta bdd, tu spécifies juste la connection au constructeur:
$users = new f_user($db);
Dernière modification par wiwidumi (12-05-2009 16:48:04)
Hors ligne