Zend:如何在模型中直接访问DB

问题描述

| 我的Zend配置文件中的数据库详细信息如下:
resources.db.adapter = PDO_MysqL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = bar
resources.db.params.dbname = foo
每当我使用Zend_DB_Table类时,就会使用它们来设置认的数据库适配器,这很好。 现在,我正在编写一个不扩展Zend_DB_Table或任何其他类的模型类,并且我将需要访问数据库对象。最好的方法是什么?我正在考虑在引导程序中实例化它并将其放入注册表中,以便它也可以在其他地方使用。这是好习惯吗? 如何在不复制代码的情况下基于config选项实例化它?因为它被列为资源,我是否在加倍努力?我应该只是尝试从新的模型类中利用资源吗? 谢谢..!     

解决方法

为了将其放入模型中,我只需将其设为可在模型的构造函数中设置的属性即可,例如
class MyModel
{
    private $db;

    public function __construct(Zend_Db $db)
    {
        $this->db = $db;
    }
您可以使用此方法在控制器中检索数据库资源
$db = $this->getInvokeArg(\'bootstrap\')->getResource(\'db\');
您还将在
Zend_Registry
中找到已经注册的资源
$db = Zend_Registry::get(\'db\');
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...