【问题标题】:Use of select queries in Zend Framework without providing database info在 Zend Framework 中使用选择查询而不提供数据库信息
【发布时间】:2011-12-21 14:43:47
【问题描述】:

我通过以下代码使用选择查询:

$params = array(
        'username' => 'root',
        'password' => '',
        'dbname' => 'mst2');
    $db = Zend_Db::factory('pdo_mysql', $params);

$select = $db->select()
            ->from(array('dc' => 'delivery_center'))
            ->join(array('r' => 'region'), 'dc.region_id = r.region_id');
    $stmt = $select->query();
    $result = $stmt->fetchAll();

这里 $db 是我正在使用的数据库的凭据。但是我已经通过以下几行在 application.ini 中指定了凭据:

resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password = ''
resources.db.params.dbname = mst2

现在从逻辑上讲,我不应该再次提供这些凭据。但我必须使用选择查询。那么如何在不再次证明数据库凭据的情况下初始化 $db??提前致谢。

【问题讨论】:

  • 我自己得到了答案。我们必须这样使用:$table = new Admin_Model_DbTable_DeliveryCenter(); $select = $table->select(Zend_Db_Table::SELECT_WITH_FROM_PART); $select->setIntegrityCheck(false) ->join('region', 'region.region_id = delivery_center.region_id'); $result = $table->fetchAll($select);

标签: zend-framework zend-db zend-db-select


【解决方案1】:

Db 资源默认可用,并在引导时自动初始化。

如果你想在你的应用程序中获取数据库适配器,你可以从引导程序中获取它作为插件资源:

$resource = $bootstrap->getPluginResource('db');
$db = $resource->getDbAdapter();

如果您没有参考引导程序,您总是可以从 FrontController 中检索它:

$front = Zend_Controller_Front::getInstance(); 
$bootstrap = $front->getParam('bootstrap');

【讨论】:

    【解决方案2】:

    您可以使用

    Zend_Db::factory($zend_config_object->resources->db) 但我想如果你在 application.ini 中指定了这个,那么 zend 会自动为你创建 db 对象,你可以通过
    Zend_Register 和键“db”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 2023-01-18
      • 2012-02-24
      • 2015-03-24
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多