今天一同事问我cakeph连接多数据库的方法,平时没用到,就给他查了查cakephp的官方文档和其他资料,整理一份如下:
在cakephp的app/config/database.php写cakephp连接数据库的基本配置上有如下的配置,这样写多个数据库,
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'database',
'prefix' => 'database_name',
//'encoding' => 'utf8',
);
public $test = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'test_database_name',
'prefix' => '',
//'encoding' => 'utf8',
);
然后在model里用调用test这个数据库,当前操作的数据库就为test数据库了
<?php
class Example extends AppModel {
public $useDbConfig = test;
}
之后又在网上查找发现一边cakephp动态调用数据库的方法也不错 贴出来给大家
http://my.opera.com/jlake/blog/2008/03/11/cakephp
<?php
class DATABASE_CONFIG {
//local
public $local = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'localhost',
'login' => 'root',
'password' => ",
'database' => 'local',
'prefix' => '');
//dev server
public $dev = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'mysql.dev.com',
'login' => 'dev',
'password' => 'password',
'database' => 'dev',
'prefix' => '');
//live server
public $live = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'mysql.live.com',
'login' => 'live',
'password' => 'password',
'database' => 'live',
'prefix' => ");
//switch between configs
var $default = array();
var $test = array();
function __construct() {
//wildcard the subdomains
$host_r = explode('.', $_SERVER['SERVER_NAME']);
if(count($host_r)>2) while(count($host_r)>2)array_shift($host_r);
$mainhost = implode('.', $host_r);
//switch between servers
switch(strtolower($mainhost)) {
case 'localhost':
$this->default = $this->local;
break;
case 'dev.com':
$this->default = $this->dev;
break;
case 'live.com':
$this->default = $this->live;
break;
default:
$this->default = $this->local;
}
}
//php 4 compatibility
function DATABASE_CONFIG() {
$this->__construct();
}
}
?>