2014-02-13 43 views
0

我有一個非常具體的問題,但我是一個zend框架的niewbie,所以我不知道這個數據庫適配器如何工作作爲配置,但我已經與zend的默認適配器建立了數據庫連接,並且它是成功的。現在我必須在同一應用程序中爲兩個不同的數據庫設置兩個不同的數據庫連接。所以,我已把application.ini,我已經寫了下面幾行:在Zend框架中設置一個非默認的數據庫適配器1.12

;connessione al db 
resources.db.adapter = pdo_mssql 
resources.db.params.host = "ip" 
resources.db.params.username = user 
resources.db.params.password = pwd 
resources.db.params.dbname = NAME 
resources.db.isDefaultTableAdapter = true 
resources.db.params.pdoType = dblib 

;connessione al db1 
resources.db1.adapter = pdo_mssql 
resources.db1.params.host = "ip" 
resources.db1.params.username = user 
resources.db1.params.password = pwd 
resources.db1.params.dbname = NAME 
resources.db1.isDefaultTableAdapter = false 
resources.db1.params.pdoType = dblib 

然後我去了我的動作控制器和我寫道:

$db = Zend_Registry::get ('db'); 
    $result = $db->fetchRow("SELECT [Sell-to Customer No_] FROM dbo.SyncroPlanningTable WHERE id='".$id); 
    $rag_soc=$result->{"Sell-to Customer No_"}; 
    $db1 = Zend_Registry::get ('db1'); 
    $result1 = $db1->fetchRow("SELECT [No_],[Name],[Address],[City],[Contact],[Name],[Phone] FROM `dbo.SOS$Customer` WHERE No_ = '".$rag_soc."'"); 

,我發現了錯誤以下:

Fatal error: Uncaught exception 'Zend_Application_Bootstrap_Exception' with message 'Unable to resolve plugin "db1"; 

UPDATE

我bootstrap.php是:

$resource = $this->getPluginResource ("db"); 
    $db = $resource->getDbAdapter(); 
    $db->setFetchMode (Zend_Db::FETCH_OBJ); 

    Zend_Db_Table_Abstract::setDefaultAdapter ($db); 
    Zend_Registry::set ("db", $db); 

我該如何改變它?它在您給我的手冊頁中沒有提及。

回答

1

您的代碼期待DB適配器可以在註冊表中,所以你需要從multiDB資源抓住他們,並將其儲存:

$multiDB = $this->getPluginResource('multidb'); 

Zend_Registry::set('db1', $multiDB->getDb('db1'); 
Zend_Registry::set('db2', $multiDB->getDb('db2'); 

也,這條線:

Zend_Db_Table_Abstract::setDefaultAdapter ($db); 

可以被刪除,因爲您在application.ini中指定了默認適配器。

+0

致命錯誤:未收集的異常'Zend_Application_Resource_Exception'帶有消息'數據庫適配器已嘗試檢索,但未配置'...但是已將該適配器配置到application.ini中...... ??????? – softwareplay