日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Yii框架多個(gè)數(shù)據(jù)庫操作指南(yii多數(shù)據(jù)庫)

Yii框架多個(gè)數(shù)據(jù)庫操作指南

十載的榆林網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整榆林建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“榆林網(wǎng)站設(shè)計(jì)”,“榆林網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

Yii框架是一款高效、安全、靈活的開源Web應(yīng)用程序開發(fā)框架,擁有完善的文檔和豐富的社區(qū)資源,廣受開發(fā)者的歡迎和喜愛。Yii框架的核心思想是快速開發(fā),高效性能,易用性和可擴(kuò)展性。其中,在多個(gè)數(shù)據(jù)庫操作方面,Yii框架也提供了很好的支持,本篇文章將詳細(xì)介紹Yii框架中多個(gè)數(shù)據(jù)庫操作指南。

一、操作多個(gè)數(shù)據(jù)庫

在實(shí)際應(yīng)用中,往往需要同時(shí)連接多個(gè)數(shù)據(jù)庫,例如一個(gè)系統(tǒng)的用戶信息儲(chǔ)存在一個(gè)數(shù)據(jù)庫,而另一個(gè)數(shù)據(jù)儲(chǔ)存了業(yè)務(wù)數(shù)據(jù),或者說一個(gè)用戶應(yīng)用程序在地理位置不同的數(shù)據(jù)中心中分別連接了不同的數(shù)據(jù)庫,這時(shí)候Yii框架可以幫我們輕松完成這些極具挑戰(zhàn)性的任務(wù)。

1.連接配置

Yii框架中多個(gè)數(shù)據(jù)庫操作之前需先設(shè)置不同的數(shù)據(jù)庫連接arrays配置,具體代碼如下:

return [

‘components’ => [

‘db’ => [

‘class’ => ‘yii\db\Connection’,

‘dsn’ => ‘mysql:host=localhost;dbname=dbname’,

‘username’ => ‘root’,

‘password’ => ”,

‘charset’ => ‘utf8’,

],

‘db2’ => [

‘class’ => ‘yii\db\Connection’,

‘dsn’ => ‘mysql:host=localhost;dbname=dbname2’,

‘username’ => ‘root’,

‘password’ => ”,

‘charset’ => ‘utf8’,

],

],

];

2.使用不同連接

在使用不同的連接進(jìn)行操作時(shí),我們需要在執(zhí)行操作時(shí)明確指定應(yīng)該使用的連接名,只需在查詢或命令對(duì)象上調(diào)用wiyhDb():

$results = Yii::$app->db->createCommand(‘SELECT * FROM user’)->queryAll();

$results2 = Yii::$app->db2->createCommand(‘SELECT * FROM order’)->queryAll();

二、進(jìn)行分布式、分表分庫操作

對(duì)于較大的數(shù)據(jù)量和高并發(fā)的系統(tǒng)來說,我們往往需要對(duì)需要對(duì)數(shù)據(jù)庫進(jìn)行分布式、分表分庫的操作,一方面可以避免單一節(jié)點(diǎn)性能瓶頸,另一方面也方便更好的調(diào)度、擴(kuò)展等,這時(shí)候Yii框架也提供了很好的支持,使我們可以容易地把一張表分成多個(gè)分表分散到不同的門店中。

1.進(jìn)行分表分庫操作

在代碼中進(jìn)行分表分庫操作時(shí),我們需要做一些配置。在配置文件中定義不同的數(shù)據(jù)庫連接數(shù)組:

return [

‘components’ => [

‘db’ => [

‘class’ => ‘yii\db\Connection’,

‘dsn’ => ‘mysql:host=localhost;dbname=dbname’,

‘username’ => ‘root’,

‘password’ => ”,

‘charset’ => ‘utf8’,

],

‘db_order’ => [

‘class’ => ‘yii\db\Connection’,

‘dsn’ => ‘mysql:host=localhost;dbname=dbname2’,

‘username’ => ‘root’,

‘password’ => ”,

‘charset’ => ‘utf8’,

],

],

];

然后,我們可以通過以下代碼進(jìn)行分表操作:

Yii::$app->db->createCommand()->insert(‘t_order_’.($id%10), [

‘id’ => $id,

‘customer_id’ => $customerId,

‘a(chǎn)mount’ => $amount,

])->execute();

在上述代碼中,我們對(duì)分表進(jìn)行了分表分庫操作,其中insert()方法我們傳遞分表分庫后的表名,這樣我們的數(shù)據(jù)就能分散到不同數(shù)據(jù)庫下不同的表中。

2.進(jìn)行分布式操作

在分布式數(shù)據(jù)庫中,我們可以建立多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)之間互相獨(dú)立,例如大型電商網(wǎng)站的訂單數(shù)據(jù)庫,就可以在不同的節(jié)點(diǎn)根據(jù)會(huì)員地理位置生成相應(yīng)的訂單數(shù)據(jù)庫,這時(shí)候在Yii框架中操作就比較容易了,只需根據(jù)MySQL的主從結(jié)構(gòu)在配制文件中定義不同的從庫和主庫:

return [

‘components’ => [

‘db’ => [

‘class’ => ‘yii\db\Connection’,

‘dsn’ => ‘mysql:host=localhost;dbname=dbname’,

‘username’ => ‘root’,

‘password’ => ”,

‘charset’ => ‘utf8’,

],

‘db_order’ => [

‘class’ => ‘yii\db\Connection’,

‘dsn’ => ‘mysql:host=localhost;dbname=dbname2’,

‘username’ => ‘root’,

‘password’ => ”,

‘charset’ => ‘utf8’,

‘enableSlaves’ => true,

‘slaveConfig’ => [

‘username’ => ‘root’,

‘password’ => ”,

],

‘separates’ => [

‘table1’ => [

‘master’ => ‘db2’,

‘slaves’ => [

‘db3’,

‘db4’,

]

]

]

],

],

];

通過上述代碼中的配制,我們就完成了分布式操作,在代碼中執(zhí)行操作時(shí)只需要指定配置文件的相應(yīng)連接即可操作不同數(shù)據(jù)庫。

三、使用事務(wù)

在 Yii 中,您可以通過 $ db->beginTransaction() 開始事務(wù)。在事務(wù)中執(zhí)行的所有 SQL 查詢都要使用同一數(shù)據(jù)庫連接,這可以通過更改 $ command->db 屬性或使用 $ db->createCommand() 方法來實(shí)現(xiàn)。

try {

$transaction = Yii::$app->db->beginTransaction();

Yii::$app->db->createCommand($sql1)->execute();

Yii::$app->db->createCommand($sql2)->execute();

// … executing other SQL statements …

$transaction->commit();

} catch (\Exception $e) {

$transaction->rollBack();

// … executing other exception handling methods …

}

到這里, 就結(jié)束了,如有不足,請(qǐng)大家多多指教,謝謝!

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!

在yii中,當(dāng)有多個(gè)models的實(shí)例保存時(shí)調(diào)用save()方法為什么會(huì)在數(shù)據(jù)庫中重復(fù)創(chuàng)建數(shù)據(jù)呢?

user那個(gè)表更新拍猛也是更新了兩次,換句話說,你這個(gè)action被調(diào)用了兩次。然后如果你用的ajax表單廳肢提交,你看下請(qǐng)求信息,襲伏橋把重復(fù)的請(qǐng)求去掉。如果是form提交,那就在保存成功后redirect一下。

yii 多數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于yii 多數(shù)據(jù)庫,Yii 框架多個(gè)數(shù)據(jù)庫操作指南,在yii中,當(dāng)有多個(gè)models的實(shí)例保存時(shí)調(diào)用save()方法為什么會(huì)在數(shù)據(jù)庫中重復(fù)創(chuàng)建數(shù)據(jù)呢?的信息別忘了在本站進(jìn)行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),香港虛擬主機(jī)被稱為香港虛擬空間/香港網(wǎng)站空間,或者簡(jiǎn)稱香港主機(jī)/香港空間。香港虛擬主機(jī)特點(diǎn)是免備案空間開通就用, 創(chuàng)新互聯(lián)香港主機(jī)精選cn2+bgp線路訪問快、穩(wěn)定!


新聞名稱:Yii框架多個(gè)數(shù)據(jù)庫操作指南(yii多數(shù)據(jù)庫)
當(dāng)前URL:http://www.dlmjj.cn/article/cdehhej.html