thinkphp多数据库切换实例
在同⼀个站点的多数库操作,对于我这样⼀个初学者来说⼀直是⼀个难点,在学习了thinkphp之后,发现这个问题的解决变得容易多了,针对thinkphp3.1版本的⼿册给出的提⽰,我整理出了3种切换数据的⽅式和实例供⼤家参考和指正。
⾸先配置App/Conf/config.php(三种⽅法都需要配置)
<span ><?php</span>
1<p><span >//默认数据库的配置
2 'DB_HOST' => '127.0.0.1',
php初学者项目3 'DB_USER' =>'root',
4 'DB_PWD'  =>'',
5 'DB_NAME'=>'blog',
6 'DB_PREFIX'=>'',</span></p><p>
7<span >  //第⼀个数据库的链接
8  'DB_CONFIG1'=>array(
9      'db_type'=>'mysql',
10  'db_user'=>'root',
11  'db_pwd'=>'',
12  'db_host'=>'localhost',
13  'db_port'=>'3306',
14  'db_name'=>'think'
15
16
17  ),</span></p><p><span >?></span></p>
第⼀种:⼀个模型对应某⼀数据库的⼀个表
(2)针对不同的表建⽴不同model
例如 :分别建⽴think库的user表和Node表
UserModel.class.php
1<strong> <span >class UserModel extends Model{
2
3  protected $connection='DB_CONFIG1'</span>
4  }
5?></strong>
NodeModel.class.php
1<p><strong><?php</strong></p><p><strong>  class NodeModel extends Model{ 2
3
4    // protected $dbname = 'user';
5      protected $connection='DB_CONFIG1';
6  }
7?></strong></p>
(3)
在控制器中调⽤
1<p><strong><?php</strong></p><p><strong>  Class IndexAction extends Action{ 2
3        //多模型切换数据库
4        public  function index(){
5
6
7          $res = D('Node')->select();
8          p($res);
9          echo "-----";
10          $user=D('user')->select();
11          p($user);
12          $this->display();
13
14  }
15  </strong></p>
结果运⾏正常。
第⼆种 在Action⽅法中切换数据库
(1)建⽴不同的Model同⽅法⼀
(2)
1//在Action的⽅法中切换数据库
2  public function test(){
3
4    // $user = M('User','','DB_CONFIG1')->query("select * from access");
5
6
7  $use=M('User')->db(1,'DB_CONFIG1')->query("select * from user");
8  $blog=M('User')->db(0)->query("select * from user");
9    p($use);
10    p($blog);
11    $this->display('index');
12
13  }
结果运⾏正常
第三种 在model类中切换,调⽤model类的⽅法
(1)
1<p><?php</p><p>  class UserModel extends Model{
2
3
4    // protected $dbname = 'user';
5    protected $connection='DB_CONFIG1';</p><p>
6  public function abc(){</p><p>  $user = $this->db(1)->query("select * from user"); //db(1)代表第⼀个数据库
7  // $blog = $this->db(0)->query("select *from user"); //db(0)代表默认数据库,⼆者随意切换
8      return $user;
9  }
10  }
11?></p>
(2)
1 //在model类中切换,调⽤model类的⽅法
2  public  function fun(){
3
4    $res = D('User')->abc();
5    p($res);
6    $this->display('index');
7
8  }
9
结果运⾏正常。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。