2013-01-02 7 views
5

Ich habe gerade begonnen, etwas über ZF und Firebird zu lernen, weil ich ein Projekt habe. Ich habe seit einigen Tagen versucht, die Verbindung zwischen beiden herzustellen, aber ich habe es noch nicht geschafft. Ich habe versucht ZF mit PDO_Mysql und es funktioniert genauso gut wie Firebird Verbindung mit PHP (von ZF), aber wenn ich versuche, die Verbindung mit dem Firebird-Adapter in ZF zu machen zeigt es alle Arten von Fehlern.Datenbankverbindung mit Firebird Adapter im Zend Framework

Also, nur um zu überprüfen. Um die Verbindung in ZF mit Firebird herzustellen, sollte dies mit dem Adapter (Firebird.php) geschehen, den ich in application.ini konfiguriert habe. Ich habe so etwas wie dies in der 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"** 

resultierende Fehler: ...Firebird.php): failed to open stream: No such file or directory in ...\Loader.php

ich auch gesehen, dass eine Funktion in der Bootstrap.php hinzugefügt werden muss. Wenn ich die Funktion initdb im bootstrap.php wie folgt hinzu:

**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; 
}** 

ich den Fehler: ...Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "config" not found' in ...\BootstrapAbstract.php

Ich mag würde wissen, was Sie wirklich brauchen, um zu tun, ich die Verbindung Arbeit zu machen . Tut mir leid, wenn das zu offensichtlich ist, aber ich konnte keinen grundlegenden Verbindungsfall finden, der spezifisch für Zend Framework und Firebird ist, daher bin ich mir nicht sicher, was ich tun soll und wohin ich gehen soll.

+0

Ja, danke für den Hinweis. Ich benutzte die Seite für die erste, als ich die Frage stellte, also keine Ahnung, wie es funktionierte. Ich weiß jetzt;) – Clarissa

+0

Gern geschehen :-) –

Antwort

5

[Disclosure:. Ich habe noch nie verwendet die Firebird db]

Wie Sie wahrscheinlich wissen, ist der Firebird-Adapter als Teil des Kern ZF1 Paket nicht versenden. Sieht aus wie Sie es von extras unter dem ZendX Präfix ziehen kann:

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

Drop die Firebird.php und Firebird/ Dateien in ein Verzeichnis library/ZendX/Db/Adapter/.

Wenn Ihr application.ini die resources.db.* Schlüssel verwendet, dann gibt es keine Notwendigkeit für eine _initDb() Methode in Ihrer Bootstrap Klasse. So stellen Sie sicher, dass Sie die adapterNamespace Schlüssel drin sind, aber auch:

resources.db.params.adapterNamespace = "ZendX_Db_Adapter_"

Sie können auch die ZendX Präfix zu Ihrem Autoloader Namespaces hinzufügen müssen:

autoloaderNamespaces[] = "ZendX_"

Nicht getestet, aber so etwas sollte funktionieren.

+0

Ok, jetzt scheint es zu funktionieren. Ich habe die resources.db.params.adapterNamespace = "ZendX_Db_Adapter_" hinzugefügt. – Clarissa

+0

Ok, jetzt scheint es zu funktionieren. Ich habe die resources.db.params.adapterNamespace = "ZendX_Db_Adapter_" hinzugefügt, aber es hat immer noch den Fehler "No so file or directory" gegeben, also habe ich zwei Kopien des gleichen Ordners in Zend/library> Zend und ZendX abgelegt. Es scheint ein bisschen chaotisch, aber jetzt funktioniert es ... Danke !!! – Clarissa

+0

Die Essenz ist, dass das 'ZendX'-Verzeichnis in Ihrem' include_path' stehen muss und der 'library'-Ordner typischerweise eine der' include_path'-Komponenten ist. Schön, dass es für dich geklappt hat. Prost! ;-) –