У меня проблема с этим решением. Пусть ми первое шоу вы мой код, чтобы лучше понять, что я хочу сказать :)Несколько баз данных динамически для одной модели в CakePHP
я получаю код от этой темы ->How to use multiple databases dynamically for one model in CakePHP
Мой AppModel.php
public function setDatabase($database, $prefix = 'b2b')
{
$nds = $prefix . '_' . $database;
$db = ConnectionManager::getDataSource($prefix);
$db->setConfig(array(
'name' => $nds,
'database' => $nds,
'persistent' => false
));
if ($ds = ConnectionManager::create($nds, $db->config)) {
$this->useDbConfig = $nds;
$this->cacheQueries = false;
return true;
}
return false;
}
В database.php у меня есть:
public $b2b = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'b2b',
'password' => 'password',
'database' => 'b2b_app',
'prefix' => '',
'encoding' => 'utf8',
);
В контроллере я сделать что-то вроде этого:
$this->loadModel('User');
if($this->isSubdomainSet()) {
$this->User->setDatabase($this->getSubdomain());
}
$this->loadModel('Package');
if($this->isSubdomainSet()) {
$this->Package->setDatabase($this->getSubdomain());
$packages = $this->Package->find('all');
}
Проблема в том, что вторая модель (Пакет) получает данные из базы данных по умолчанию, а не из базы b2b. В чем проблема? Я не знаю, почему метод setDatabase не меняет базу данных во второй раз.
Да, 'getSubdomain()' возвращает одно и то же имя базы данных, которую я хочу подключить. Но вторая модель не подключалась к этой базе данных, но по-прежнему использовала базу данных по умолчанию. – Tomek