除了在预先定义数据库连接和实例化的时候指定数据库连接外,我们还可以在模型操作过程中动态的切换数据库,支持切换到相同和不同的数据库类型。用法很简单, 只需要调用Model类的db方法,用法:
$this->db(1,"mysql://root:123456@localhost:3306/test")->query("查询SQL");
数据库编号用数字格式,对于已经调用过的数据库连接,是不需要再传入数据库连接信息的,系统会自动记录。对于默认的数据库连接,内部的数据库编号是0,因此为了避免冲突,请不要再次定义数据库编号为0的数据库配置。
实例:
同时将用户输入的数据保存到两个不同数据下的表
控制器代码:
public function AddUser(){ if(IS_POST){ if(I('post.UserName')!=''&& I('post.UserEmail','','email')!=''){ $User = D('Admin/Userinfo'); $User -> AddUser(I('post.')); } }else{ $this->show(); } }
模型类代码:
<?php namespace AdminModel; use ThinkModel; class UserinfoModel extends Model{ public function AddUser($data){ $data['LastLogin'] = date("Y-m-d H:i:s"); $this->create($data); if($this->add()){ echo "第一张表添加成功"; $this->db(1,'mysql://root:123@localhost:3306/eko_1'); $this->create($data); if($this->add()){ echo "第二张表添加成功"; } }else{ echo "失败"; } } }
在使用D()实例化自定义模型是需要严格遵守命名格则,首字母大写,如果类名是UserInfo则对应数据库名称为user_info