Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour all
Voila mon cas:
J'aimerai pouvoir faire 2 requêtes sur 2 bases (j'ai une base en france et une base en belgique).
J'ai reussi à faire une requete sur la base fr et de stocker son resultat dans mon select .
Mais maintenant je galère pas mal a geré cette double connection :(.
Quelqu'un aurai des infos la dessu ?
Merci.
Romain
Dernière modification par romain (23-01-2009 12:50:43)
Hors ligne
Bonjour,
Il faut créer les différentes connexions, ensuite si besoin en déclarer une par défaut à Zend_Db_Table qui l'utilisera automatiquement lors des requêtes.
Pour les autres, l'idéal est de les stocker dans le registre avec un nom pertinent et de passer ce nom dans le paramètre 'db' du tableau d'options lors des requêtes sur les tables concernées. Il ira chercher tout seul comme un grand l'adapter db dans la clé concernée du registre.
Tout est bien expliqué dans la doc :
http://framework.zend.com/manual/fr/zen … ng.adapter
A+ benjamin.
Hors ligne
Je vais regardé ca .
Merci.
Romain.
Hors ligne
voila c'est fait !
je post ma conf et un exemple pour ceux qui aurais les mêmes problemes
app.ini
[development : production] database.adapter = "oracle" database.params.host = "192.168.xxx.xxx" database.params.username = "xxx" database.params.password = "xxx" database.params.dbname = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xxx.xxx) (PORT = 1521)))(CONNECT_DATA =(SID = xxx)))" database.params.options.caseFolding = 2 database.params.options.autoQuoteIdentifiers = 0 database2.adapter = "oracle" database2.params.host = "192.168.xxx.xxx" database2.params.username = "xxx" database2.params.password = "xxx" database2.params.dbname = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xxx.xxx) (PORT = 1521)))(CONNECT_DATA =(SID = xxx)))" database2.params.options.caseFolding = 2 database2.params.options.autoQuoteIdentifiers = 0
bootsrap.php
$dbAdapter = Zend_Db::factory($configuration->database); $dbAdapter2 = Zend_Db::factory($configuration->database2); $registry->dbAdapter = $dbAdapter; $registry->dbAdapter2 = $dbAdapter2;
et model_sdg
class Model_Sdg { public function recherche() { //prefix de la requête commune au 2 base $qry = "select ................" //end of query fr $qry1 = $qry."and b.actid not in (2,59717,20) "; //end of query be $qry2 = $qry."and b.actid not in (1,2, 28927) "; $db = Zend_Registry::get("dbAdapter"); $db2 = Zend_Registry::get("dbAdapter2"); //execution et récuperation des données de la base FR $select = $db->query($qry1); $rows = $select->fetchAll(); //execution et récuperation des données de la base BE $select2 = $db2->query($qry2); $rows2 = $select2->fetchAll(); //on concatene le tableau de valeur 1 $rows avec le tableau de valeur 2 $rows2 $rows2[sizeof($rows2)] = $rows[0]; //retour de rows2 return $rows2; } }
voila si ce code peux être utlie à des gens tand mieux
Hors ligne