牛骨文教育服务平台(让学习变的简单)
博文笔记

thinkphp 多数据库切换实例

创建时间:2015-05-11 投稿人: 浏览次数:3073


在同一个站点的多数库操作,对于我这样一个初学者来说一直是一个难点,在学习了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");
  
  }
  

结果运行正常。

 

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。