除了在預先定義數據庫連接和實例化的時候指定數據庫連接外,我們還可以在模型操作過程中動態的切換數據庫,支持切換到相同和不同的數據庫類型。用法很簡單, 只需要調用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 Admin\Model; use Think\Model; 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