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小时内删除。
发表评论