2012-05-31 2 views
0

Я ищу способ создания переменной базы данных в Cakephp. Я создаю веб-сайт, в котором настройка базы данных (user, pass, db) зависит от пользователя, который входит в систему. Параметры базы данных поступают из другой базы данных. Спасибо заранее,Переменная настройка базы данных Cakephp

Aarón

- ОТВЕТ

Спасибо за быстрый ответ. Я знаю, как переключаться между базами данных, но параметры базы данных должны быть переменными. Пример

$db = $this->DB_SET['DB_SET']['db']; //from model DB_SET the database 
    $db_login= $this->DB_SET['DB_SET']['login']; 
    $db_host= $this->DB_SET['DB_SET']['host']; 
    $db_pass= $this->DB_SET['DB_SET']['pass']; 
    var $db2 = array(
      'driver' => 'mysql', 
      'persistent' => false, 
      'host' => $db_host, 
      'login' => $db_login, 
      'password' => $db_pass, 
      'database' => $db, 
      'prefix' => '', 
      'encoding' => 'UTF8', 
      'port' => '', 
     ); 

ответ

2

Если вы хотите создать соединение с базой данных на лету, вы можете захотеть использовать ConnectionManager::create().

// get logged in user's id and create a connection for them 
$id = $this->Auth->user('id'); 
ConnectionManager::create("user_$id_db", array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => $db_host, 
    'login' => $db_login, 
    'password' => $db_pass, 
    'database' => $db, 
    'prefix' => '', 
    'encoding' => 'UTF8', 
    'port' => '', 
)); 

Затем установите модели, чтобы использовать их, когда будете готовы.

// get logged in user's id and use their connection 
$id = $this->Auth->user('id'); 
$this->Model->setDataSource("user_$id_db"); 
+0

Удивительный! Работает очень хорошо! Большое спасибо!! – Aaron

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