thinkphp3.2.3動態切換多資料庫
阿新 • • 發佈:2019-02-10
版本說明:
- thinkphp3.2.3
新增自定義行為類
- 檔案位置:Application/Common/Behaviors/SwitchDbBehavior.class.php
-
檔案內容:
namespace Common\Behaviors; class SwitchDbBehavior { //私有庫id,如何連線公有庫則設定為share字串 private $_privateId = ''; /* * 行為擴充套件的執行入口必須是run * $param 為引用傳值,所以實參必須是變數 */ public function run(&$params)
-
以上檔案中用到的常量在我們的配置檔案Application/Common/Conf/constant.php中. 內容如下:
/*資料庫配置*/ define('DB_WECHAT_HOST','127.0.0.1'); //主機host define('DB_WECHAT_USER','common'); //使用者名稱 define('DB_WECHAT_PASS','common'); //密碼 define('DB_WECHAT_NAME','wechat_'); //私有庫字首 define('DB_WECHAT_SHARE_NAME','wechat_share'); //共有庫名 define('DB_WECHAT_PORT','3306'); //埠 define('DB_WECHAT_DEBUG',TRUE); //資料庫除錯模式 開啟後可以記錄SQL日誌
-
圖中程式碼驗證資料庫存在不存在的C('PRIVATEIDS')在檔案Application/Common/Conf/dbname.php中配置內容如下:
<?php /* * 本配置檔案主要儲存資料庫字尾名, * 字首為wechat_, * 在Application/Common/Behaviors/TestBehavior.class.php中驗證 * 注意:在新增資料庫的時候,注意修改該檔案 * * @author: liangxifeng * @date: 2016-08-13 */ return array( 'PRIVATEIDS'=>array('share',1,2,3,4) );
-
constant.php和dbname.php則是在配置檔案Application/Common/Conf/config.php中使用擴充套件配置選項配置載入;
'LOAD_EXT_CONFIG' => 'constants,systemConfig,dbname',//載入常量配置
-
在使用自定義行為類的時候要在Application/Common/Conf/中新增tags.php
內容如下:/* * 擴充套件行為類配置檔案 * @author:liangxifeng * @date:2016-08-13 */ return array( //應用開始標籤位新增切換資料庫行為 'action_begin'=>array('Common\\Behaviors\\SwitchDbBehavior'), );
使用方法
在註冊session後或手動載入使用,比如在控制器中:
public function index()
{
//註冊session切換資料庫
session('privateId',2);
//手動切換資料庫為私有庫
tag('action_begin',$params='share');
$wechat = D('Wechat');
//查詢資料庫
$res = $wechat->where('wechat_id=1')->find();
echo "<pre>";
var_dump($res);
exit;
}