thinkphp 多数据库动态切换及使用方法

kevin.Zhu 发布于:2013-1-16 16:12 分类:Thinkphp  有 16 人浏览,获得评论 0 条  

在项目中可能会碰到多个数据库进行切换的情况,thinkphp是怎么操作的呢? 其实手册高级模型的部分有讲。但从官方论坛上看到还是有很多朋友问到 怎样进行多数据库进行切换及使用的问题。在这里就我自己的实际应用跟需要的朋友分享一下。

首先,我们要明白多数据动态切换是高级模型的部分。否则使用的时候可能会出现:提示[Model:addConnect您所请求的方法不存在!]

这样的提示。这正是由于使用普通的实例化模型的方法导致的(直接使用D或M方法)。此时必须这样使用M(‘表名’,'AdvModel’)方法。即模型要继承AdvModel才可以。接着就可以增加一个数据库连接。$User->addConnect($myConnect1,1);进而使用这个连接进行数据的查询。$User->switchConnect(2); $User->where($where)->select();

完整的操作方法如下:

$myConnect1 = 'mysql://username:passwd@localhost:3306/DbName';

$obj = M('table','AdvModel');
$obj->addConnect($myConnect1,1);
$obj->switchConnect(1);
$result = $obj->where($where)->select();
//此时如果想切换到该数据库下的其他表,可以这样操作。
//$obj->switchConnect(1,"anotherTable");