Home > PHP > Zend_Db i Firebird

Zend_Db i Firebird

wrzesień 26th, 2008

Niedawno w jednym z serwisów, które napisałem zaistniała potrzeba zaciągnięcia pewnych danych z bazy Firebird/Interbase. Jako, że serwis jest napisany w zend zajżałem więc do katalogu DB, no i niestety wcześniej nie zdawałem sobie z tego sprawy, ale zend w wersji 1.6 nie posiada adaptera Firebird/Interbase.
Zacząłem więc przeszukiwać internet w poszukiwaniu rozwiązania. W końcu dotarłem do Zend Incubator gdzie można ściągnąć poszukiwany przezemnie sterownik.
Jest on dopiero rozwijany ale pewnie już niedługo zostanie włączony do głównej dystrybucji ZF.

A oto krótkie info jak go używać, sprawa jest prosta i właściwie standardowa.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* database.ini
[firebird]
      db.adapter = FIREBIRD
      db.config.host = localhost
      db.config.username = SYSDBA
      db.config.password = masterkey
      db.config.dbname = /home/db/newdb.fdb
*/
 
//zaciągany konfigurację z pliku .ini
$Config = new Zend_Config_Ini( './configs/database.ini', 'firebird' );
$cfgConfig = $Config->db->config->toArray();
$cfgConfig['options'] = array(Zend_Db::CASE_FOLDING => Zend_Db::CASE_UPPER);
 
//standardowo za pomoca metody factory łaczymy się z bazą
$db = Zend_Db::factory($Config->db->adapter, $cfgConfig );
$db->setFetchMode(Zend_Db::FETCH_ASSOC);

jeśli łaczymy się z dwiema bazami musimy uzyć rejestru.

1
2
3
4
5
6
7
8
9
 
$Config = new Zend_Config_Ini( './configs/database.ini', 'mysql' );
$db = Zend_Db::factory($Config->db->adapter, $Config->db->config->toArray());
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db', $db);
 
$Config = new Zend_Config_Ini( './configs/database.ini', 'firebird' );
$fdb = Zend_Db::factory($Config->db->adapter, $Config->db->config->toArray());
Zend_Registry::set('fdb', $fdb);

Później przy wywołaniu modelu musimy pobrać z rejestru odpowiednie połaczenie i przekazać je do konstruktora modelu.

1
2
$db = Zend_Registry::get('fdb);
$model = new NewModel(array('fdb' => $db));

Właściwie obsługa Firebird/Interbase w zend jest identyczna ja w przypadku innych baz, wystarczy tylko zmienić odpowiednie opcje konfiguracji wybarać adapter i używać.

Powiązane wpisy:

admin PHP , ,

  1. No comments yet.
  1. No trackbacks yet.
agencja reklamowa lublin ślub i wesele senniki