Zend Framework birden fazla veritabanı

3 Cevap php

Şu anda Zend Framework ile tek bir veritabanı kullanıyorum, ama şimdi ben bir daha eklemek gerekir.

Ben şu anda bu kodu kullanıyorum:

public static function setupDatabase()
{
    $config = self::$registry->configuration;
    $db = Zend_Db::factory($config->db->adapter, $config->db->toArray());
    $db->query("SET NAMES 'utf8'");
    self::$registry->database = $db;
    Zend_Db_Table::setDefaultAdapter($db);
}

Ne Kodu BİR DAHA veritabanını kullanmak için yazmak gerekiyor; Ben bazı sorguları ya da öylesine yapmak gerektiğinde ve nasıl, bunu referans olacaktır ..

3 Cevap

Benim durumda, ben müşteri veritabanı bağlantı bilgi dahil olmak üzere, müşteri bilgilerini yükler bir 'çekirdek' veritabanı var. Çekirdek bağlantı ayarları application.ini vardır. Aşağıda tüm kod benim bootstrap bulunmaktadır.

Yükleme 'çekirdek' bağlantısı (temerrüde ayarlı değil ini):

$db_core = $this->getPluginResource('db')->getDbAdapter();
$db_core->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Registry::set('db_core', $db_core);

Ayarlar kayıt içine 'çekirdek' veritabanından yüklenir sonra:

$settings = Zend_Registry::get('settings');
$db = Zend_Db::factory(
    $settings->db_adapter,
    array(
        'host' => $settings->db_host,
        'username' => $settings->db_user,
        'password' => $settings->db_pass,
        'dbname' => $settings->db_name,
    )
);
$db->setFetchMode(Zend_Db::FETCH_OBJ);
Zend_Db_Table::setDefaultAdapter($db);

Lütfen application.ini gibi bir şey koyun

  [production]

  resources.multidb.db1.adapter = "pdo_mysql"

  resources.multidb.db1.host = "localhost"

  resources.multidb.db1.username = "webuser"

  resources.multidb.db1.password = "XXXX"

  resources.multidb.db1.dbname = "db1"



  resources.multidb.db2.adapter = "pdo_pgsql"

  resources.multidb.db2.host = "example.com"

  resources.multidb.db2.username = "dba"

  resources.multidb.db2.password = "notthatpublic"

  resources.multidb.db2.dbname = "db2"

  resources.multidb.db2.default = true