2013-01-02 9 views
5

Właśnie zacząłem uczyć się o ZF i Firebird z powodu projektu, do którego jestem przydzielony. Od kilku dni próbuję nawiązać połączenie między oboma, ale jeszcze mi się nie udało. Próbowałem ZF z PDO_Mysql i działa dobrze, ponieważ łączy się Firebird z PHP (z ZF), ale kiedy próbuję nawiązać połączenie z kartą Firebird w ZF, wyświetla ona wszystkie rodzaje błędów.Połączenie z bazą danych za pomocą adaptera Firebird w Zend Framework

Tak więc, aby sprawdzić. Aby nawiązać połączenie w ZF z Firebird, należy to zrobić za pomocą adaptera (Firebird.php), który skonfigurowałem w application.ini? Mam coś takiego w application.ini:

**resources.db.adapter = "Firebird" 
resources.db.params.host = "localhost" 
resources.db.params.dbname = "C:/wamp/www/WebTH/application/data/THDATA.gdb" 
resources.db.params.username = "sysdba" 
resources.db.params.password = "masterkey"** 

błąd wynikający: ...Firebird.php): failed to open stream: No such file or directory in ...\Loader.php

widziałem też, że funkcja musi być dodany w bootstrap.php. Jeśli dodać do InitDB funkcji w bootstrap.php tak:

**protected function _initDb() 
{ 
    $this->bootstrap('config'); 
    $config = $this->getResource('config'); 
    $db = Zend_Db::factory('Firebird', array(
     'host' => $config->Database->Server, 
     'username' => $config->Database->Username, 
     'password' => $config->Database->Password, 
     'dbname' => $config->Database->DBName, 
     'adapterNamespace' => 'ZendX_Db_Adapter' 
    )); 
    return $db; 
}** 

pojawia się błąd: ...Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "config" not found' in ...\BootstrapAbstract.php

Chciałbym wiedzieć, co mogę naprawdę trzeba zrobić, aby uczynić pracę połączenia . Przepraszam, jeśli to zbyt oczywiste, ale nie udało mi się znaleźć podstawowego przypadku połączenia specyficznego dla Zend Framework i Firebird, dlatego nie jestem pewien, co powinienem zrobić i gdzie powinienem się udać.

+0

Tak, dziękuję za poradę. Korzystałem z tej strony po raz pierwszy, gdy zadałem pytanie, więc nie miałem pojęcia, jak to działało. Wiem teraz;) – Clarissa

+0

Serdecznie zapraszamy :-) –

Odpowiedz

5

[Ujawnienie. Nigdy nie użył Firebird dB]

Jak Państwo zapewne wiedzą, Firebird adapter nie jest dostarczany jako część pakietu ZF1 rdzenia. Wygląda na to, można wyciągnąć go z extras pod prefiksem ZendX:

http://framework.zend.com/svn/framework/extras/trunk/library/ZendX/Db/Adapter/

Drop Firebird.php i Firebird/ pliki do katalogu library/ZendX/Db/Adapter/.

Jeśli application.ini wykorzystuje resources.db.* klucze, to nie ma potrzeby stosowania metody w swojej klasie Bootstrap_initDb(). Wystarczy upewnić się, że to klucz adapterNamespace tam, a także:

resources.db.params.adapterNamespace = "ZendX_Db_Adapter_"

Można również dodać przedrostek ZendX do nazw AutoLoader:

autoloaderNamespaces[] = "ZendX_"

nie testowano, ale coś takiego powinno zadziałać.

+0

OK, teraz wydaje się działać. Dodałem resource.db.params.adapterNamespace = "ZendX_Db_Adapter_" – Clarissa

+0

OK, teraz wydaje się działać. Dodałem resource.db.params.adapterNamespace = "ZendX_Db_Adapter_", ale dało to błąd "Brak takiego pliku lub katalogu", więc zrobiłem dwie kopie tego samego folderu w Zend/library> Zend i ZendX. Wydaje się nieco niechlujny, ale teraz działa ... Dzięki !!! – Clarissa

+0

Najważniejsze jest to, że katalog 'ZendX' musi znajdować się w' include_path' i zazwyczaj folder 'library' jest jednym z komponentów' include_path'. Cieszę się, że się udało. Twoje zdrowie! ;-) –

Powiązane problemy