thinkphp 多数据库切换实例

来源:互联网 发布:淘宝平面模特 编辑:程序博客网 时间:2024/06/03 13:48


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

结果运行正常。

 

 

0 0
原创粉丝点击