【小(xiǎo)編推薦】ThinkPHP3.2—♠¥♠—切換數(shù)據庫

2014-06-26  &nbs©‍p;|   發布者:梁國(g® €☆uó)芳   §≥|   查看(kàn):3320次

Thinkphp

除了(le)在預先定義數(shù)據庫連接 ¶♠和(hé)實例化(huà)的(de)時(shí)候指定數(shù)據庫連↑​φ₹接外(wài),我們還(hái)可(kě)以δ♣在模型操作(zuò)過程中動态的(de)& ₩♦切換數(shù)據庫,支持切換到(dào)相(xiàγ★™αng)同和(hé)不(bù)同的(de)數(shù)據庫類型。用(yòng)法ε'很(hěn)簡單, 隻需要(yào)調用(yòng≤∑)Model類的(de)db方法,用(yòng)法:

Model->db("數(s→≈₹×hù)據庫編号","≈♦"數(shù)據庫配置");

數(shù)據庫編号用(yòng)數(shù)字格式,對(duì)于已經調用(≈™yòng)過的(de)數(shù)據庫連接,是(shαγì)不(bù)需要(yào)再傳入數(shù)據庫連接信息的(de σ§),系統會(huì)自(zì)動記錄。對(duì)于默認的(de)數(shù≠δ)據庫連接,內(nèi)部的(de)數(s→ ∏✔hù)據庫編号是(shì)0,因此為(wèi)了(le)避免沖突,請(qǐngγ&≥)不(bù)要(yào)再次定義數(shù)據庫編号 ☆為(wèi)0的(de)數(shù)據庫配♦ 置。

數(shù)據庫配置的(de)定義方式和(hé)模型定義connectionφπσβ屬性一(yī)樣,支持數(shù)組、字符串以及調用(yòng)配λ¥×置參數(shù)三種格式。

Db方法調用(yòng)後返回當前的(de)模型實例,直接可₩♦±₹(kě)以繼續進行(xíng)模型的(de)其他(tā≥β)操作(zuò),所以該方法可(kě)以在查詢的(de)過程中¶±動态切換,例如(rú):

  1. $this->db(1,"mysql://root:12345™¶π£6@localhost:3306/test")->query("查詢SQL");

該方法添加了(le)一(yī)個(gè)編号為(wèi±φ☆→)1的(de)數(shù)據庫連接,并自(zì)動切換到(dào)當♦δ 前的(de)數(shù)據庫連接。

當第二次切換到(dào)相(xiàng)同的(de)數(shù₹£±)據庫的(de)時(shí)候,就(jiù)不(¥≤bù)需要(yào)傳入數(shù)據庫連>‍接信息了(le),可(kě)以直接使用(yòng):

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

如(rú)果需要(yào)切換到(dào)默認的(de)數(shù)據庫連接₩™‍,隻需要(yào)調用(yòng):

  1. $this->db(0);

如(rú)果我們已經在項目配置中定義了(le)其他(tā)的(de)數(shùδ ∑)據庫連接信息,例如(rú):

  1. //數(shù)據庫配置1
  2. 'DB_CONFIG1' = array(
  3. 'db_type' => 'mysql',
  4. 'db_user' => 'root',
  5. 'db_pwd' => '1234',
  6. 'db_host' => 'localhost',
  7. 'db_port' => '3306',
  8. 'db_name' => 'thinkphp'
  9. ),
  10. //數(shù)據庫配置2
  11. 'DB_CONFIG2' => 'mysql://root:1234@localhost:33↓±06/thinkphp';

我們就(jiù)可(kě)以直接在db方法中調用(yòng)配置進行(x™∑íng)連接了(le):

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

如(rú)果切換數(shù)據庫之後,數(shù)據表和(hé)當前不(bù)±≈一(yī)緻的(de)話(huà),可(kě)以使用(yòng)table≈λ方法指定要(yào)操作(zuò)的(de)數(shù)據φ&♦♣表:

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