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

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


咨詢
建站咨詢
