我试图在不使用MVC结构的情况下使用Zend Framework,特别是Db_Table
类。
我创建了几个代表我的数据库表的类,即
class DBTables_Templates extends Zend_Db_Table_Abstract
{
protected $_name = "templates";
}
当我尝试实例化这个类时(包含它很好),我收到以下错误:
致命错误:未捕获异常'Zend_Db_Table_Exception',并显示消息'找不到DBTables_Templates的适配器'
有谁知道我如何创建并包含要使用的Db_Table
类的数据库适配器?
任何指针都非常感谢!我使用的是最新版本的ZF。
答案 0 :(得分:15)
您需要创建一个Zend_Db_Adapter,它是用于连接数据库的类。
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
或者您可以使用factory()
方法使实例化更具可配置性:
$db = Zend_Db::factory('Pdo_Mysql', array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
请参阅http://framework.zend.com/manual/en/zend.db.html#zend.db.adapter.connecting
然后将此适配器对象指定给表类。至少有三种方法可以做到这一点:
为所有表设置应用程序范围的默认值:
Zend_Db_Table_Abstract::setDefaultAdapter($db);
指定表构造函数的适配器:
$table = new MyTable( array('db'=>$db) );
将适配器存储在注册表中并将其指定到表中或将其设置为默认值:
Zend_Registry::set('my_db', $db);
$table = new MyTable( array('db'=>'my_db') );
// alternatively:
Zend_Db_Table_Abstract::setDefaultAdapter('my_db');
请参阅http://framework.zend.com/manual/en/zend.db.table.html#zend.db.table.constructing