thinkphp3.2之切換數據庫


1.數據庫切換

  原因:在我們實際的項目開發中,經常會遇到一個項目使用多個數據庫,那么在使用thinkphp框架的時候,存在使用過程中數據庫轉換使用的問題,或者多個數據庫同時使用的問題,接下來一起研究研究如何切換數據庫。

 

  首先,我們在使用tp框架的時候會預先定義數據庫連接和實例化的時候指定數據庫連接,這樣我們只能預定義連接一個數據庫,然而我們還可以在模型操作過程中動態的切換數據庫,支持切換到相同和不同的數據庫類型。

 

  使用方法:

  Model->db("數據庫編號","數據庫配置");

  數據庫編號:數據庫編號用數字格式,對於已經調用過的數據庫連接,是不需要再傳入數據庫連接信息的,系統會自動記錄。對於默認的數據庫連接,內部的數據庫編號是0,因此為了避免沖突,請不要再次定義數據庫編號為0的數據庫配置。

  數據庫配置:數據庫配置的定義方式:支持數組、字符串以及調用配置參數三種格式。

  

  Db方法 調用后返回當前的模型實例,直接可以繼續進行模型的其他操作,所以該方法可以在查詢的過程中動態切換:

 

$this->db(1,"mysql://root:1234@www.xxx.com:3306/test")->query("查詢SQL");

 

  該方法添加了一個編號為1的數據庫連接,並自動切換到當前的數據庫連接。

 

 當第二次切換到相同的數據庫的時候,就不需要傳入數據庫連接信息了,可以直接使用:

$this->db(1)->query("查詢SQL");

 

   那么,當我們需要切換回主數據庫時,只需要:

$this->db(0);

 

 

  例如:定義一個主數據庫和一個副數據庫

    

//主數據庫配置0
'DB_CONFIG1' = array(   
   'db_type'  => 'mysql',    
   'db_user'  => 'root',   
   'db_pwd'   => '1234',  
    'db_host'  => 'localhost',    
   'db_port'  => '3306',   
   'db_name'  => 'thinkphp'
),
//副數據庫配置1
'DB_CONFIG2' => 'mysql://root:1234@www.xxx.com:3306/thinkphp';

 

 

  對於上面例子中的數據庫切換:

$this->db(1,"DB_CONFIG1")->query("查詢SQL");
$this->db(2,"DB_CONFIG2")->query("查詢SQL");

 

  那么在切換數據庫后,怎么指向我們需要用到的數據表呢?  使用table方法指定要操作的數據表。

$this->db(1)->table("top_user")->find();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM