2015-04-23 3 views
1

У меня проблема с этим решением. Пусть ми первое шоу вы мой код, чтобы лучше понять, что я хочу сказать :)Несколько баз данных динамически для одной модели в 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 не меняет базу данных во второй раз.

ответ

0

база данных не изменяется, потому что вы изменили к тому же дважды

$this->User->setDatabase($this->getSubdomain()); 

и позже вы

$this->Package->setDatabase($this->getSubdomain()); 

Так что не может быть другая база данных. Я думаю, getSubdomain() вернет то же самое оба раза

+0

Да, 'getSubdomain()' возвращает одно и то же имя базы данных, которую я хочу подключить. Но вторая модель не подключалась к этой базе данных, но по-прежнему использовала базу данных по умолчанию. – Tomek

Смежные вопросы