Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-04-2009 23:59:03

libertux
Nouveau membre
Date d'inscription: 25-04-2009
Messages: 7

Comment utiliser deux base de données

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

 

#2 26-04-2009 00:09:20

3uclide
Membre
Date d'inscription: 09-08-2008
Messages: 194

Re: Comment utiliser deux base de données

Tu crée deux adapters MySQL et tu les mes sous des noms différents dans le registre (Zend_Registry).

Hors ligne

 

#3 26-04-2009 11:30:35

libertux
Nouveau membre
Date d'inscription: 25-04-2009
Messages: 7

Re: Comment utiliser deux base de données

merci de votre réponse wink
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 :

Code:

...

// Mise en place de la BDD
$db = Zend_Db::factory($config->db);
Zend_Db_Table::setDefaultAdapter($db);
...

merci wink

Hors ligne

 

#4 27-04-2009 11:47:08

matdev
Membre
Date d'inscription: 31-03-2009
Messages: 172

Re: Comment utiliser deux base de données

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

Code:

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

Code:

// 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

 

#5 27-04-2009 11:51:37

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Comment utiliser deux base de données

Hello,

C'est ça

Code:

Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);

ou ça :

Code:

Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter2);

Si tu fais le 2ème, le 1er ne sert à rien.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#6 27-04-2009 13:47:04

matdev
Membre
Date d'inscription: 31-03-2009
Messages: 172

Re: Comment utiliser deux base de données

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

 

#7 27-04-2009 16:10:31

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Comment utiliser deux base de données

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)


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#8 27-04-2009 17:00:07

matdev
Membre
Date d'inscription: 31-03-2009
Messages: 172

Re: Comment utiliser deux base de données

ok merci pour les précisions mikaelkael ;-)

Hors ligne

 

#9 12-05-2009 08:50:33

libertux
Nouveau membre
Date d'inscription: 25-04-2009
Messages: 7

Re: Comment utiliser deux base de données

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 :

Code:

...
$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 :

Code:

...
$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 wink

Merci

Hors ligne

 

#10 12-05-2009 16:46:00

wiwidumi
Membre
Date d'inscription: 14-04-2009
Messages: 19

Re: Comment utiliser deux base de données

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

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages