新聞中心
我們知道數(shù)據(jù)庫的配置中有支持對默認數(shù)據(jù)庫的配置,因此?DB?對象及?Model?對象在初始化的時候已經(jīng)綁定到了特定的數(shù)據(jù)庫上。運行時切換數(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è)計制作的專業(yè)網(wǎng)站設(shè)計公司,擁有經(jīng)驗豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨特的設(shè)計風格。自公司成立以來曾獨立設(shè)計制作的站點超過千家。
- 通過不同的配置分組來實現(xiàn)。這需要在配置文件中配置不同的分組配置,隨后在程序中可以通過?
g.DB("分組名稱")?來獲取特定數(shù)據(jù)庫的單例對象。 - 通過運行時?
DB.SetSchema?方法切換單例對象的數(shù)據(jù)庫,需要注意的是由于修改的是單例對象的數(shù)據(jù)庫配置,因此影響是全局的:
g.DB().SetSchema("user-schema")
g.DB().SetSchema("order-schema")
- 通過鏈式操作?
Schema?方法創(chuàng)建?Schema?數(shù)據(jù)庫對象,并通過該數(shù)據(jù)庫對象創(chuàng)建模型對象并執(zhí)行后續(xù)鏈式操作:
db.Schema("user-schema").Model("user").All()
db.Schema("order-schema").Model("order").All()也可以通過鏈式操作?Model.Schema?方法設(shè)置當前鏈式操作對應(yīng)的數(shù)據(jù)庫,沒有設(shè)置的情況下使用的是其?DB?或者?TX?默認連接的數(shù)據(jù)庫:
db.Model("user").Schema("user-schema").All()
db.Model("order").Schema("order-schema").All()注意兩種使用方式的差別,前一種方式來自于?Schema?對象創(chuàng)建?Model?對象后執(zhí)行操作;后一種方式是通過修改當前?Model?對象操作的數(shù)據(jù)庫名稱達到切換數(shù)據(jù)庫的目的。
- 此外,假如當前數(shù)據(jù)庫操作配置的用戶有權(quán)限,那么可以直接通過表名中帶數(shù)據(jù)庫名稱實現(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() 網(wǎng)站標題:創(chuàng)新互聯(lián)GoFrame教程:GoFrame鏈式操作-數(shù)據(jù)庫切換
分享網(wǎng)址:http://www.5511xx.com/article/djpggjo.html


咨詢
建站咨詢
