thinkphp 多数据库切换实例
在同一个站点的多数库操作,对于我这样一个初学者来说一直是一个难点,在学习了thinkphp之后,发现这个问题的解决变得容易多了,针对thinkphp3.1版本的手册给出的提示,我整理出了3种切换数据的方式和实例供大家参考和指正。
首先配置App/Conf/config.php(三种方法都需要配置)
<span style="font-size:18px;"><?php</span>
<p><span style="font-size:18px;">//默认数据库的配置 "DB_HOST" => "127.0.0.1", "DB_USER" =>"root", "DB_PWD" =>"", "DB_NAME"=>"blog", "DB_PREFIX"=>"",</span></p><p> <span style="font-size:18px;"> //第一个数据库的链接 "DB_CONFIG1"=>array( "db_type"=>"mysql", "db_user"=>"root", "db_pwd"=>"", "db_host"=>"localhost", "db_port"=>"3306", "db_name"=>"think" ),</span></p><p><span style="font-size:18px;">?></span></p>
第一种:一个模型对应某一数据库的一个表
(2)针对不同的表建立不同model
例如 :分别建立think库的user表和Node表
UserModel.class.php
<strong> <span style="font-size:18px;">class UserModel extends Model{
protected $connection="DB_CONFIG1"</span>
}
?></strong>
NodeModel.class.php
<p><strong><?php</strong></p><p><strong> class NodeModel extends Model{
// protected $dbname = "user";
protected $connection="DB_CONFIG1";
}
?></strong></p>
(3)
在控制器中调用
<p><strong><?php</strong></p><p><strong> Class IndexAction extends Action{
//多模型切换数据库
public function index(){
$res = D("Node")->select();
p($res);
echo "-----";
$user=D("user")->select();
p($user);
$this->display();
}
</strong></p>
结果运行正常。
第二种 在Action方法中切换数据库
(1)建立不同的Model同方法一
(2)
//在Action的方法中切换数据库
public function test(){
// $user = M("User","","DB_CONFIG1")->query("select * from access");
$use=M("User")->db(1,"DB_CONFIG1")->query("select * from user");
$blog=M("User")->db(0)->query("select * from user");
p($use);
p($blog);
$this->display("index");
}
结果运行正常
第三种 在model类中切换,调用model类的方法
(1)
<p><?php</p><p> class UserModel extends Model{
// protected $dbname = "user";
protected $connection="DB_CONFIG1";</p><p>
public function abc(){</p><p> $user = $this->db(1)->query("select * from user"); //db(1)代表第一个数据库
// $blog = $this->db(0)->query("select *from user"); //db(0)代表默认数据库,二者随意切换
return $user;
}
}
?></p>
(2)
//在model类中切换,调用model类的方法
public function fun(){
$res = D("User")->abc();
p($res);
$this->display("index");
}
结果运行正常。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了
