当前位置:  开发笔记 > 编程语言 > 正文

在注册表中注册Zend数据库适配器

如何解决《在注册表中注册Zend数据库适配器》经验,为你挑选了3个好方法。

我希望在引导期间注册对注册表中的主数据库适配器的引用,以便它可以在我的站点中的其他地方使用(特别是授权操作).

我已经实现了一个丑陋的修复,我创建了一个Database Table对象并在其上调用getAdapter()方法并通过它.但是,这是一种不好的方式,我希望它可以通过注册表获得.

有谁知道如何做到这一点?任何帮助或指向正确的方向表示赞赏!

干杯斯图尔特

PS.我正在使用Zend Framework 1.8.



1> Andrew..:

如果您正在使用Zend Framework 1.8+,并使用命令行工具创建项目,那么就像在application.ini配置文件中注册数据库设置一样简单.

resources.db.adapter = "PDO_MYSQL"
resources.db.params.host = "your.database.host"
resources.db.params.dbname = "database_name"
resources.db.params.username = "username"
resources.db.params.password = "password"
resources.db.isDefaultTableAdapter = true

如果您的数据库设置之前,resources.db您甚至不需要在Bootstrap.php文件中执行任何操作,因为它会为您执行此操作.此外,通过将设置isDefaultTableAdapter设置为true,您可以在应用程序的任何位置获取数据库适配器的实例.

$dbAdapter = Zend_Db_Table::getDefaultAdapter();
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);


谢谢......为什么ZF文档坚持总是在内存设置中引用`$ dbAdapter`和一些奇怪的SQLite .`getDefaultAdapter()`应该是在整个过程中始终引用当前`$ dbAdapter`的默认方式文档.Bajeezus,SO永远不会让我失望.

2> Stuart..:

谢谢你的回复.我决定改变接受的答案并发布我最终使用的解决方案 - 这最终是非常简单的!!

这基本上是基于Dcaunt的评论......

在bootstrap类..

protected function _initDb()
{
    $resource = $bootstrap->getPluginResource('db');

    $db = $resource->getDbAdapter();

    Zend_Registry::set("db", $db);
}

然后访问其他地方......

$dbAdapter = Zend_Registry::get("db");

感谢您的帮助,希望这有助于其他人.



3> Ian Warner..:

你错过了最好的东西:)

如果您使用Zend_Db_Table模型(您应该是)等,那么您可以设置一个默认适配器 - 这种方式当您实例化模型时它关注的数据库连接 - 这样您就不需要将它保存在注册表中或打扰关于通过模型运行查询之前的连接.

我确实将它保存在注册表中供以后使用,但是我可以将其删除

protected function _initDB()
{
    // Check that the config contains the correct database array.
    if ($this->_config->db) {

        // Instantiate the DB factory
        $dbAdapter = Zend_Db::factory($this->_config->db);

        // Set the DB Table default adaptor for auto connection in the models
        Zend_Db_Table::setDefaultAdapter($dbAdapter);

        // Add the DB Adaptor to the registry if we need to call it outside of the modules.
        Zend_Registry::set('dbAdapter', $dbAdapter);
    }
}

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有