zend-framework - 在不使用MVC的情况下使用Zend Framework Db表

标签 zend-framework zend-db zend-db-table

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

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

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

当我尝试实例化此类(包括它很好)时,出现以下错误:

Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'No adapter found for DBTables_Templates'



有谁知道我如何创建和包括数据库适配器供Db_Table类使用?

任何指针,不胜感激!我正在使用最新版本的ZF。

最佳答案

您需要创建一个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

    关于zend-framework - 在不使用MVC的情况下使用Zend Framework Db表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1526656/

    相关文章:

    zend-framework - 如何阻止 ZF 在开头发送空字符?

    javascript - 如何使用 Dojo 循环遍历表单元素/字段

    mysql - 如何在 Zend Framework 2 中设置 sql_mode?

    php - 这里如何使用JOIN查询呢?

    php - 用户可以通过或不通过身份验证在单个YouTube channel 上上传视频

    php - Magento 集合 - 使用 addAttributeToFilter 的嵌套 where 子句

    mysql - 将原始sql转换为ZF2语句

    php - Zend 框架 : Proper way to interact with database?

    authentication - zend Framework 2 使用 Db 表进行身份验证失败

    zend-framework - 左外连接如何在 Zend 框架上工作