新聞中心
我們知道數(shù)據(jù)庫的配置中有支持對默認(rèn)數(shù)據(jù)庫的配置,因此?DB?對象及?Model?對象在初始化的時候已經(jīng)綁定到了特定的數(shù)據(jù)庫上。運(yùn)行時切換數(shù)據(jù)庫有幾種方案(假如我們的數(shù)據(jù)庫有?user?用戶數(shù)據(jù)庫和?order?訂單數(shù)據(jù)庫):

創(chuàng)新互聯(lián)公司是一家從事企業(yè)網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、做網(wǎng)站、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)制作的專業(yè)網(wǎng)站設(shè)計(jì)公司,擁有經(jīng)驗(yàn)豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計(jì)人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實(shí)力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨(dú)特的設(shè)計(jì)風(fēng)格。自公司成立以來曾獨(dú)立設(shè)計(jì)制作的站點(diǎn)超過千家。
- 通過不同的配置分組來實(shí)現(xiàn)。這需要在配置文件中配置不同的分組配置,隨后在程序中可以通過?
g.DB("分組名稱")?來獲取特定數(shù)據(jù)庫的單例對象。 - 通過運(yùn)行時?
DB.SetSchema?方法切換單例對象的數(shù)據(jù)庫,需要注意的是由于修改的是單例對象的數(shù)據(jù)庫配置,因此影響是全局的:
g.DB().SetSchema("user-schema")
g.DB().SetSchema("order-schema")
- 通過鏈?zhǔn)讲僮?
Schema?方法創(chuàng)建?Schema?數(shù)據(jù)庫對象,并通過該數(shù)據(jù)庫對象創(chuàng)建模型對象并執(zhí)行后續(xù)鏈?zhǔn)讲僮鳎?/li>
db.Schema("user-schema").Model("user").All()
db.Schema("order-schema").Model("order").All()也可以通過鏈?zhǔn)讲僮?Model.Schema?方法設(shè)置當(dāng)前鏈?zhǔn)讲僮鲗?yīng)的數(shù)據(jù)庫,沒有設(shè)置的情況下使用的是其?DB?或者?TX?默認(rèn)連接的數(shù)據(jù)庫:
db.Model("user").Schema("user-schema").All()
db.Model("order").Schema("order-schema").All()注意兩種使用方式的差別,前一種方式來自于?Schema?對象創(chuàng)建?Model?對象后執(zhí)行操作;后一種方式是通過修改當(dāng)前?Model?對象操作的數(shù)據(jù)庫名稱達(dá)到切換數(shù)據(jù)庫的目的。
- 此外,假如當(dāng)前數(shù)據(jù)庫操作配置的用戶有權(quán)限,那么可以直接通過表名中帶數(shù)據(jù)庫名稱實(shí)現(xiàn)跨域操作,甚至跨域關(guān)聯(lián)查詢:
// SELECT * FROM `order`.`order` o LEFT JOIN `user`.`user` u ON (o.uid=u.id) WHERE u.id=1 LIMIT 1
db.Model("order.order o").LeftJoin("user.user u", "o.uid=u.id").Where("u.id", 1).One() 名稱欄目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame鏈?zhǔn)讲僮?數(shù)據(jù)庫切換
當(dāng)前路徑:http://www.dlmjj.cn/article/djpggjo.html


咨詢
建站咨詢
