CodeIgniter et la gestion des bases de données

CodeIgniter est capable au travers de « drivers » de gérer plusieurs types de base de données tel-que :

  • Cubrid
  • msSql
  • mysql
  • mysqli
  • oci8
  • odbc
  • postgre
  • sqlite
  • sqlsrv

Un grand choix donc. J’ai pu rajouter FirebridSQL car un pilote à été créé mais là je me suis rendu compte des limites du système.

Je vous réexplique : j’ai 2 BDD sous FirebridSQL et une sous mySQL, mon objectif est de toutes les faire discuter.

Dans la configuration on ne me propose de n’utiliser qu’un seul type de BDD avec n bases mais pas plusieurs BDD simultanément ou alors je n’ai pas trouvé comment.

Tout l’intérêt de passer par le pilote du FrameWork c’est d’avoir Active Record pour interroger la base de donnée. Ce design pattern simplifie grandement le travail, il est fortement inspiré de ROR (ruby on rails).

pour information voici ce qu’on peut faire avec une requête de sélection :

$query = $this->db->get('mytable');

Et c’est tout ! Extraordinaire non ? Bon allé c’est à peine plus long, voici un code complet qui va se retrouver dans un fichier de mon modele :

 <?php
 
 public function getSouplMuscById($configuration_exercice_id_fk, $bilan_id_fk, ){
        
            $this->db->select('valeur_1, valeur_2, masse');
            $this->db->from('exercice');
            $this->db->where('configuration_exercice_id_fk', $configuration_exercice_id_fk);
            $this->db->where('bilan_id_fk', $bilan_id_fk);

            $query = $this->db->get();

            if ($query->num_rows() > 0)
            {
                foreach ($query->result() as $row ) {
                    array_push($this->_arraySouplMusc,
                                                 array(
                                                        $row->valeur_1,
                                                        $row->valeur_2,
                                                        $row->masse)
                            );
                    }
                return (array) $this->_arraySouplMusc;
            } else {
                return (bool) false;
            }
        }