Я написал сценарий, который проходит через мое приложение ini.
Проблема, с которой я сталкиваюсь сейчас, заключается в том, что когда я добираюсь до следующей базы данных, ее по-прежнему выбирают из первой базы данных, а не из новой.
Возможно ли закрыть соединение, а затем открыть новое соединение при запуске скрипта. Помните, что это просто сценарий, у меня нет загрузочного набора. Я просто настраиваю автозагрузку, чтобы загрузить мои модели.
При прохождении через секции ini
try { $db = Zend_Db::factory($section->database->type, $section->database->toArray()); Zend_Db_Table::setDefaultAdapter($db); Zend_Registry::set('db', $db); } catch(Zend_Db_Adapter_Exception $e) { continue; }
См. Zend_Application_Resource_Multidb :
application.ini
[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
index.php
$resource = $bootstrap->getPluginResource('multidb'); $db1 = $resource->getDb('db1'); $db2 = $resource->getDb('db2'); $defaultDb = $resource->getDb();
Для всех, у кого нет решения, все, что вам нужно сделать, это следующее:
application.ini -> Определите свои базы данных здесь
resources.multidb. db .adapter = SQLSRV
resources.multidb.db.host = localhost
resources.multidb.db.username = root
resources.multidb.db.password =
resources.multidb.db.dbname =
resources.multidb.db.isDefaultTableAdapter = true
resources.multidb. db2 .adapter = SQLSRV
resources.multidb.db2.host = localhost
resources.multidb.db2.username = root
resources.multidb.db2.password =
resources.multidb.db2.dbname =
resources.multidb.db2.isDefaultTableAdapter = false
контроллер или модель, где необходимо установить соединение со второй БД
$ db2Ob = Zend_Controller_Front :: getInstance () -> getParam ('bootstrap') -> getResource ('multidb') -> getDb (' db2 ');
Теперь используйте этот $ db2Ob для выполнения запросов:
$ select = $ db2Ob-> select () -> from (array ('db2tbl' => 'table in 2nd DB'), array ('column name')) -> где (условие);
Надеюсь, это поможет кому-то.
С Уважением,
Супрея Раджгопал