9

我正在尝试使用 Zend 框架而不使用 MVC 结构,特别是Db_Table类。

我创建了几个代表我的数据库表的类,即

class DBTables_Templates extends Zend_Db_Table_Abstract  
{  
    protected $_name = "templates";  
}  

当我尝试实例化这个类(它被很好地包含在内)时,我收到以下错误:

致命错误:未捕获的异常 'Zend_Db_Table_Exception' 并带有消息 'No adapter found for DBTables_Templates'

有谁知道我如何为Db_Table要使用的类创建和包含数据库适配器?

任何指针都非常感谢!我正在使用最新版本的 ZF。

4

1 回答 1

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

于 2009-10-06T16:32:29.217 回答