Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-07-2011 10:47:49

thebarbarius
Membre
Date d'inscription: 11-07-2011
Messages: 25

Gerer plusieurs base de donnée

Bonjours a tous.

Je suis tous nouveau sur zend framework, je débarque de cakePHP, qui a fini par me décevoir.

Donc j'ai suivi plusieurs formation pour la mise a niveau.
Mais ces formation ne montré pas comment gérer plusieurs bases de données.

J'ai vue plusieurs tuto sur votre forum sur la gestion de plusieurs DB, mais étant vraiment novice je ne suis pas en mesure de comprendre.

Pourriez vous s'il vous plait, m'expliquer comment gerer plusieurs base de donné et comment switcher entre elle ?

je vous remercie, dans l'attente d'une réponse.

Hors ligne

 

#2 11-07-2011 11:04:14

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: Gerer plusieurs base de donnée

Tu devrais pouvoir trouver ton bonheur aux exemples #8 à #10 de la documentation.

En gros, il te faut construire un adaptateur par connexion dont tu as besoin (#8), puis de les stocker dans le registre, pour qu'elles soient facilement accessibles par tes classes (#10), et tu peux éventuellement déclarer une de tes connexions comme connexion par défaut (#9).

Hors ligne

 

#3 11-07-2011 11:20:31

thebarbarius
Membre
Date d'inscription: 11-07-2011
Messages: 25

Re: Gerer plusieurs base de donnée

Merci de votre aide.

J'ai une question... cette classe faut la creer ou ?

Code:

    class Bugs extends Zend_Db_Table_Abstract
    {
        protected $_name = 'bugs';
    }

Hors ligne

 

#4 11-07-2011 11:36:02

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Gerer plusieurs base de donnée

Heu ça c'est pour l'exemple tu dois la créer nul part cette classe. Sinon ce serait dans ton dossier Model.

Hors ligne

 

#5 11-07-2011 12:00:06

thebarbarius
Membre
Date d'inscription: 11-07-2011
Messages: 25

Re: Gerer plusieurs base de donnée

Merci.

Ensuite il y a un problème.

J'alterne entre mysql et mssql et en lisant la doc il me semble qu'on ne puisse pas alterner de type de DB.

Ai je faux ?

Et comment y remédier ?

Hors ligne

 

#6 11-07-2011 12:22:18

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: Gerer plusieurs base de donnée

thebarbarius a écrit:

Merci.

Ensuite il y a un problème.

J'alterne entre mysql et mssql et en lisant la doc il me semble qu'on ne puisse pas alterner de type de DB.

Ai je faux ?

Et comment y remédier ?

Ben si, tu peux !
C'est ce que je t'ai expliqué : tu crées tes N connexions, tu les déclares toutes dans Zend_Registry (avec un nom bien distinct) et tu fais appel à l'une ou l'autre depuis n'importe quel endroit de ton code, avec quelque chose comme ceci :

Code:

[lang=php]
// Enregistrement de l'adaptateur pour les connexions vers MySQL
$db = Zend_Db::factory('PDO_MYSQL', $options);
Zend_Registry::set('mysql', $db);


// Ailleurs dans ton code
$db_mysql = Zend_Registry::get('mysql' ); //$db_mysql est de type 'Zend_Db_Adapter_Abstract'

Hors ligne

 

#7 16-07-2011 13:15:04

thebarbarius
Membre
Date d'inscription: 11-07-2011
Messages: 25

Re: Gerer plusieurs base de donnée

Merci.

Moi j'ai plutot un code qui ressemble a sa dans index.php

Code:

$mssql = Zend_Db::factory($config->database->mssql->adapter,array(
  'host'      => $config->database->mssql->params->host, 
  'username'  => $config->database->mssql->params->username,
  'password'  => $config->database->mssql->params->password,
  'dbname'    => $config->database->mssql->params->dbname,
    )
);

$mysql = Zend_Db::factory($config->database->mysql->adapter,array(
  'host'      => $config->database->mysql->params->host, 
  'username'  => $config->database->mysql->params->username,
  'password'  => $config->database->mysql->params->password,
  'dbname'    => $config->database->mysql->params->dbname,
    )
);

// placons la connexion dans un registre global à l'application
$registry = Zend_Registry::getInstance();
$registry->set('mssql', $mssql);

// Tentative de configuration -> a verifié
$mysql = Zend_Registry::getInstance();
$mysql->set('mysql', $mysql);

Donc ma connexion principale est mssql et la secondaire mysql.

Je sais pas si j'ai bien fait.

Comment je fais dans le model pour switcher de DB ?

Hors ligne

 

#8 18-07-2011 08:43:04

f.garoby
Membre
Date d'inscription: 02-03-2011
Messages: 105

Re: Gerer plusieurs base de donnée

C'est presque bon.
Personnellement, j'aurais plutôt fait ça, pour la fin :

Code:

[lang=php]
// placons la connexion dans un registre global à l'application
$registry = Zend_Registry::getInstance();
$registry->set('mssql', $mssql);
Zend_Db_Table_Abstract::setDefaultAdapter( $mssql );

$registry->set('mysql', $mysql);

Dans ce cas, tu n'auras rien à faire pour les requêtes destinées à 'mssql'. Par contre, pour celles destinées à 'mysql', tu devras faire ceci :

Code:

[lang=php]
$mysql = Zend_Registry::get( 'mysql' );
$mysql->fetchAll(); // Exemple de requête

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