2013-08-22 8 views
0

У меня есть приложение в CakePhp 1.2, где зависит от домена, НЕКОТОРЫЕ из моделей должны динамически изменять базу данных.Изменить базу данных на лету в Cakephp 1.2 только в некоторых моделях

Так что мне нужно, чтобы найти легкий путь к:

  1. Проверьте домен.
  2. Установить $ useDbConfig на некоторых моделях базы данных .

Эта функция на database.php изменить базу данных в зависимости только от домена, но не на модели:

public function __construct(){ 

if (strpos(env('HTTP_HOST'), 'site_one') !== false) { 

    // use site_one database config 
    $this->default = $this->site_one; 

} elseif (strpos(env('HTTP_HOST'), 'site_two') !== false) { 

    // use site_two database config 
    $this->default = $this->site_two; } 

} 

Как я могу изменить базу данных в зависимости также от модели?

Заранее спасибо.

+0

Отъезд: http://stackoverflow.com/questions/13223946/how-to-use-multiple-databases -dynamically-for-one-model-in-cakephp – Alvaro

+0

Можете ли вы обновить? –

ответ

0

Что делать, если вы использовали свой код, но имели дополнительную конфигурацию базы данных для тех моделей, которые не меняются? Эта дополнительная конфигурация базы данных не будет изменена функцией, которую вы опубликовали. В тех моделях, которые вы не хотите изменить, добавьте строку

var $useDbConfig = 'static'; 

или что-то название вашей конфигурации базы данных является то, что не меняется. Затем те, которые меняются, оставляют использование конфигурации по умолчанию.

+0

Он работает! Удивительно! Большое спасибо! Я пытался изменить на лету переменную $ useDbConfig в каждой модели, но я не мог этого сделать. –

+0

Я проверил множество форумов, документации и т. Д., Но я так и не нашел этого решения. –

0

записи в вашем database.php

var $default = array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'root', 
    'password' => '', 
    'database' => 'first-database-name', 
    'prefix' => '', 
); 

var $otherdatabase = array(
    'driver' => 'mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'root', 
    'password' => '', 
    'database' => 'other-database-name', 
    'prefix' => '', 
); 

и в модели

class Modelname extends AppModel { 

    var $name = 'Modelname'; 
    var $useTable = 'tablename from other-database'; 
    var $useDbConfig = 'otherdatabase '; 
    .......... .......... ......... 
+0

Это текущий способ, но мне нужно изменить $ useDbConfig на лету, в зависимости от домена. Таким образом, это не сработает. –

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

  • Нет связанных вопросов^_^