0

我在 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; } 

}

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

提前致谢。

4

2 回答 2

0

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

var $useDbConfig = 'static'; 

或者无论您的数据库配置名称是什么,都不会改变。然后那些确实改变的,你离开使用默认配置。

于 2013-08-22T20:49:28.877 回答
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 ';
    .......... .......... .........
于 2013-08-23T05:32:52.973 回答