2011-09-29 5 views
10

DISCLAIMER: Je suis nouveau au développement webUtilisation de bases de données multiples dans CodeIgniter

SCÉNARIO: Je construis une application Web qui ion_auth utilise pour gérer toutes les informations utilisateur/administrateur (utilise la base de données MySQL), et chaque l'utilisateur a sa propre base de données (MySQL) pour les applications de base. J'ai automatiquement chargé la base de données que j'utilise pour ion_auth dans le fichier applicaton/config/database.php dans CodeIgniter. J'utilise le format MVC standard (modèles individuels appartenant à chaque base de données). Problème: J'ai besoin de savoir comment utiliser plusieurs bases de données à la fois dans CodeIgniter facilement et efficacement. Dois-je relier les deux schémas de base de données ensemble, ou est-ce que CodeIgniter le fera pour moi? Existe-t-il des ressources pour résoudre ce problème (j'ai eu du mal à en trouver un)?

Merci beaucoup pour votre aide!

+1

Comment vous souhaitez utiliser plusieurs bases de données? Par configuration? Par contrôleur? Passer manuellement? – hakre

Répondre

23

dans votre fichier de configuration de base de données ajouter autant de groupes de configuration que le nombre de vos bases de données:

$db['a']['hostname'] = 'localhost'; 
$db['a']['username'] = 'user'; 
$db['a']['password'] = 'pw'; 
$db['a']['database'] = 'db1'; 
... 

$db['b']['hostname'] = 'localhost'; 
$db['b']['username'] = 'user'; 
$db['b']['password'] = 'pw'; 
$db['b']['database'] = 'db2'; 
... 

//set the default db 
$active_group = 'a'; 

alors sur votre modèle initialiser une variable de classe:

private $db_b; 

et, dans le contructor, le définir comme suit

__construct() 
{ 
    ... 
    $this->db_b = $this->load->database('b', TRUE); 
} 

maintenant vous êtes en mesure d'utiliser la base de données b comme d'habitude:

$this->db_b->query('YOUR QUERY'); 

et, évidemment, la valeur par défaut un comme suit:

$this->db->query('YOUR QUERY'); 
+0

Battez-moi en quelques secondes! +1 –

+4

Assurez-vous de régler '$ db ['default'] ['pconnect'] = FALSE;' – tpae

Questions connexes