2013-01-02 7 views
5

私が割り当てられたプロジェクトのため、ZFとFirebirdについて学び始めました。私は数日の間に両者を結びつけようとしていますが、まだ成功していません。 私はPDO_MysqlでZFを試してみましたが、PHPとのFirebird接続(ZF外)と同じように動作しますが、ZFのFirebirdアダプタとの接続を試みると、すべての種類のエラーが表示され続けます。Zend FrameworkのFirebirdアダプタとのデータベース接続

だから、ちょうど確認する。 FirebirdとZFで接続するには、application.iniで設定したアダプタ(Firebird.php)を使用してください。

**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"** 

結果のエラー:私はまた、機能がbootstrap.phpの中に追加する必要があることを見てきました...Firebird.php): failed to open stream: No such file or directory in ...\Loader.php

私はのapplication.iniでこのようなものを持っています。私はこのようなbootstrap.phpの中で機能initdbのを追加する場合:

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

私はエラーを取得する:私は本当に接続作業を行うために何をする必要があります知っているしたいと思います

...Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Resource matching "config" not found' in ...\BootstrapAbstract.php 。申し訳ありませんが、これはあまりにも明白ですが、Zend FrameworkとFirebirdに固有の基本的な接続ケースを見つけることができなかったため、私は何をすべきか、どこに行かなければならないのかは分かりません。

+0

はい、アドバイスありがとうございます。私は質問をしたときに最初にサイトを使用していたので、それがどのように機能したかはわかりませんでした。私は今知っている;) – Clarissa

+0

あなたは歓迎です:-) –

答えて

5

[情報開示:私はFirebirdデシベルを使用したことがありません。]

あなたはおそらく気づいているとして、FirebirdのアダプタはコアZF1パッケージの一部として出荷されません。

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

はディレクトリlibrary/ZendX/Db/Adapter/Firebird.phpFirebird/ファイルをドロップ:あなたはZendX接頭辞の下extrasからそれを引き出すことができるように見えます。

application.iniresources.db.*キーを使用している場合は、Bootstrapクラスに_initDb()メソッドは必要ありません。ただ、だけでなく、あなたがそこにadapterNamespaceキーが含まれていることを確認してください:

resources.db.params.adapterNamespace = "ZendX_Db_Adapter_"

あなたはまた、あなたのオートローダの名前空間にZendXプレフィックスを追加する必要があるかもしれません:

autoloaderNamespaces[] = "ZendX_"

テストされていません、このようなものはうまくいくはずです。

+0

今、それは動作するようです。私はresources.db.params.adapterNamespace = "ZendX_Db_Adapter_"を追加しました – Clarissa

+0

さて、これはうまくいくようです。私はresources.db.params.adapterNamespace = "ZendX_Db_Adapter_"を追加しましたが、 "No such file or directory"というエラーが出たので、Zend/library> ZendとZendXに同じフォルダの2つのコピーを置くことです。ちょっと混乱しているようですが、今は動作しています...ありがとう!!! – Clarissa

+0

本質的に、 'ZendX'ディレクトリは' include_path'になければならず、 'library'フォルダは' include_path'コンポーネントの一つです。うれしいことはあなたのために働いた。乾杯! ;-) –