Несколько баз данных в консольном приложении cakephp

Ниже приведен мой код консоли для создания схемы базы данных. Я должен управлять несколькими схемами миграции базы данных. Когда я вызываю функцию generateDb, она создает основную схему, после чего я переключаю соединение базы данных с клиентской базой данных, но схема клиента не генерируется. это снова генерирует главную схему.

class HelloShell extends AppShell {
public $uses = array('ClientDbdetail');
public function generateDb() {
$runCommand = shell_exec(APP.'Console/cake schema generate -f master');
if ($runCommand) {
$sessionArray = $this->ClientDbdetail->find('first', array('recursive' => -1));
$this->__switchDb($sessionArray['ClientDbdetail']);
shell_exec(APP.'Console/cake schema generate -f client');
$this->out('Schema generated');
} else {
$this->out('Schema not generated');
}
}

private function __switchDb(array $userDetail) {
$username = 'default';
$settings = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'port' => 3306,
'login' => $userDetail['user_dbuser'],
'password' => $userDetail['user_dbpwd'],
'database' => $userDetail['user_dbname'],
'prefix' => ''
);
ConnectionManager::drop($username);
ConnectionManager::create($username, $settings);
ConnectionManager::getDataSource($username);
}
}

0

Решение

Из книги CakePHP есть пример.

public $connection = 'default';

public function before($event = array()) {
$db = ConnectionManager::getDataSource($this->connection);
$db->cacheSources = false;
return true;
}

и после :

public function before($event = array()) {
$articles = ClassRegistry::init('Articles', array(
'ds' => $this->connection
));
// Do things with articles.
}

видеть это : http://book.cakephp.org/2.0/en/console-and-shells/schema-management-and-migrations.html

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]