Zend Framework在Zend_Db_Table中使用多数据库问题

肥臣 2011-09-06 12:34:24
使用ZF的Application组件进行MVC的开发,但是在建立Model的时候,选择不同的数据库这里出现了问题。

// application.ini 配置片段
...
resources.multidb.default.adapter = "pdo_mysql"
resources.multidb.default.host = "localhost"
resources.multidb.default.username = "mammy"
resources.multidb.default.password = "daddy"
resources.multidb.default.dbname = "data"

resources.multidb.data.adapter = "pdo_mysql"
resources.multidb.data.host = "192.168.1.5"
resources.multidb.data.username = "root"
resources.multidb.data.password = "123456"
resources.multidb.data.dbname = "data"
resources.multidb.data.port = "3307"
...

我要建立一个访问data源的model,如下

class Application_Model_DbTable_Match extends Zend_Db_Table_Abstract
{

protected $_name = 'match';
protected $_db = 'data';

}

在controller中执行

$table = new Application_Model_DbTable_Match();
var_dump($table->find(234));

出错提示
Fatal error: Call to a member function describeTable() on a non-object in D:\wamp\www\ZendFramework-1.11.10\library\Zend\Db\Table\Abstract.php on line 835

各位朋友遇到过这种问题吗?是如何解决的?
...全文
492 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ygb_Prince 2011-09-30
  • 打赏
  • 举报
回复
这种情况可以参考 Zend_Config这样你就可以得到默认的db
[first]
resources.adapter = "pdo_mysql"
resources.host = "localhost"
resources.username = "mammy"
resources.password = "daddy"
resources.dbname = "data"

[first : one]
resources.adapter = "pdo_mysql"
resources.host = "192.168.1.5"
resources.username = "root"
resources.password = "123456"
resources.dbname = "data"
resources.port = "3307"

然后
$config=new Zend_Config_ini("配置文件路径",'one');
$table = new Application_Model_DbTable_Match();
var_dump($table->find(234));
caravans 2011-09-28
  • 打赏
  • 举报
回复
在Bootstrap.php中 加入以下函数
//设置DB配置信息
protected function _initDB(){
$options = $this->getOption('resources');

$resource = $this->getPluginResource('multidb');
$resource->init();
$db1 = $resource->getDb('default');
$db2 = $resource->getDb('data');
Zend_Registry::set('db1', $db1);
Zend_Registry::set('db2', $db2);
Zend_Db_Table::setDefaultAdapter($db1);

}

当前默认db1数据库
需要用db2数据库
在类中加入函数
public function __construct(){
$db2 = Zend_Registry::get('db2');
$this->setDefaultAdapter($db2);
parent::__construct();
}

blackmanII 2011-09-19
  • 打赏
  • 举报
回复
需要对多数据库配置;设置一个为默认的。
foreach ($config->db as $config_name => $db) {
$dbAdapters[$config_name] = Zend_Db::factory($db->adapter, $db->toArray());
if($db->adapter != "SQLSRV")
{
$dbAdapters[$config_name]->query("SET NAMES 'utf8'");
}
//self::$registry->database = $dbAdapters[$config_name];
if((boolean)($db->default))
Zend_Db_Table::setDefaultAdapter ($dbAdapters[$config_name]);
}
Table of Contents •Introduction to Zend Framework •Overview •Installation •Learning Zend FrameworkZend Framework Quick Start •Autoloading in Zend Framework •Plugins in Zend Framework •Getting Started with Zend_Layout •Getting Started Zend_View Placeholders •Understanding and Using Zend Form Decorators •Getting Started with Zend_Session, Zend_Auth, and Zend_Acl •Getting Started with Zend_Search_Lucene •Getting Started with Zend_Paginator •Zend Framework Reference •Zend_Acl •Zend_Amf •Zend_Application •Zend_Auth •Zend_Barcode •Zend_Cache •Zend_Captcha •SimpleCloud API: Zend_Cloud •Zend_CodeGenerator •Zend_Config •Zend_Config_Writer •Zend_Console_Getopt •Zend_Controller •Zend_Currency •Zend_Date •Zend_DbZend_Debug •Zend_Dojo •Zend_Dom •Zend_Exception •Zend_Feed •Zend_File •Zend_Filter •Zend_Form •Zend_Gdata •Zend_Http •Zend_InfoCard •Zend_Json •Zend_Layout •Zend_Ldap •Zend_Loader •Zend_Locale •Zend_Log •Zend_Mail •Zend_Markup •Zend_Measure •Zend_Memory •Zend_Mime •Zend_Navigation •Zend_Oauth •Zend_OpenId •Zend_Paginator •Zend_Pdf •Zend_ProgressBar •Zend_Queue •Zend_Reflection •Zend_Registry •Zend_Rest •Zend_Search_Lucene •Zend_Serializer •Zend_Server •Zend_Service •Zend_Session •Zend_Soap •Zend_Tag •Zend_Test •Zend_Text •Zend_TimeSync •Zend_Tool •Zend_Tool_FrameworkZend_Tool_Project •Zend_Translate •Zend_Uri •Zend_Validate •Zend_Version •Zend_View •Zend_Wildfire •Zend_XmlRpc •ZendX_Console_Process_Unix •ZendX_JQuery •Zend Framework Requirements •Introduction •Zend Framework Migration Notes •Zend Framework 1.10 •Zend Framework 1.9 •Zend Framework 1.8 •Zend Framework 1.7 •Zend Framework 1.6 •Zend Framework 1.5 •Zend Framework 1.0 •Zend Framework 0.9 •Zend Framework 0.8 •Zend Framework 0.6 •Zend Framework Coding Standard for PHP •Overview •PHP File Formatting •Naming Conventions •Coding Style •Zend Framework Documentation Standard •Overview •Documentation File Formatting •Recommendations

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧