我正在尝试在我的bootstrap.php文件中注册我的默认数据库适配器,以便我可以在任何地方访问它。到目前为止,这是我的代码:
//bootstrap.php
protected function _initDb()
{
$dbAdapter = Zend_Db::factory(Zend_Registry::get('configuration')
->resources->db->adapter,
Zend_Registry::get('configuration')
->resources->db->params->toArray());
Zend_Registry::set('dbAdapter', $dbAdapter);
Zend_Db_Table_Abstract::setDefaultAdapter($dbAdapter);
}
然后我试着在我的一个模型中称它为:
//exampleModel.php
$select = $this->_getDbAdapter()
->select()
->from(array('t' => $this->_getTable()->getName()),
array('name'))....
但是我收到错误:
Call to undefined method Application_Model_Example::_getdbAdapter() in...
很明显,它正在我当前的课程中寻找它并找不到它......
答案 0 :(得分:1)
您需要在Model_Example
中使用此功能public function _getSqlAdapter()
{
return Zend_Registry::get('dbAdapter');
}
或直接致电Zend_Db_Table::getDefaultAdapter()
而非$this->_getDbAdapter()
答案 1 :(得分:0)
在提供的代码中,您似乎没有从注册表中调用适配器。您需要使用Zend_Registry::get('dbAdapter');
Application_Model_Example扩展了什么类?
答案 2 :(得分:0)
我的引导程序中有Zend_Db_Table::setDefaultAdapter($dbAdapter);
(请注意其Zend_Db_Table
,而不是Zend_Db_Table_Abstract
。)
然后在我的模型中,我会使用
$select = $this->->select()
->from(array('t' => $this->_getTable()->getName()), array('name'))....
假设您的模型扩展了Zend_Db_Table
?