2013-08-22 21 views
0

我在CakePhp 1.2中有一個應用程序,其中取決於域,某些模型必須更改dinamically數據庫。在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

我檢查了很多論壇,文檔等,但我從來沒有找到這個solucion。 –

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,具體取決於域。所以,它不起作用。 –