Zend_Db i Firebird
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: