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

时间:2011-05-24 02:32:02

标签: php zend-framework models

我的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类时,这些都用于设置默认的db适配器,这很好。

现在我正在编写一个不扩展Zend_DB_Table或任何其他类的模型类,我将需要访问DB对象。最好的方法是什么?我正在考虑在bootstrap中实例化它并将其放入注册表中,以便它也可以在其他地方使用。这是好习惯吗?

如何根据配置选项对其进行实例化,而不在代码中复制它们?我是否将事物加倍,因为它被列为资源?我是否应该尝试从我的新模型类中获取资源?

谢谢..!

1 个答案:

答案 0 :(得分:2)

要将它放入模型中,我只需将其设为属性,可在模型的构造函数中设置,例如

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');