在一些模型中,在Cakephp 1.2中即时更改数据库

时间:2013-08-22 15:19:57

标签: php cakephp cakephp-1.2

我在CakePhp 1.2中有一个应用程序,它取决于域名,一些模型必须在数据库中改变它。

所以我需要找到一个简单的方法:

  1. 检查域名。
  2. 在数据库的某些模型上设置$ useDbConfig 必需的。
  3. 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; } 
    
    }
    

    如何根据模型更改数据库?

    提前致谢。

2 个答案:

答案 0 :(得分:0)

如果您使用了代码,但对于那些不会更改的模型有额外的数据库配置,该怎么办?您发布的功能不会更改此附加数据库配置。在那些您不想更改的模型中,添加行

var $useDbConfig = 'static'; 

或者数据库配置的名称不会改变。然后那些做了改变,你使用默认配置离开。

答案 1 :(得分: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 ';
    .......... .......... .........