1、多資料庫配置
'db' => require(__DIR__ . '/db.php'),
'gdb' => require(__DIR__ . '/gdb.php'),
複制
db或gdb的配置檔案如下:
if (YII_ENV == 'dev') {
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=192.168.1.42;dbname=gather',
'username' => 'lizhi',
'password' => '123456',
'charset' => 'utf8',
];
} else {
return [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=gather',
'username' => 'gather',
'password' => 'gather(!2',
'charset' => 'utf8',
];
}
複制
2、 調用相應的資料庫
/**
* @return \yii\db\Connection the database connection used by this AR class.
*/
public static function getDb()
{
return Yii::$app->get('gdb');
}
複制
當然您也可以用gii進行建立,選擇連接配接池處會出現你多資料庫配置的相應db名稱。如gdb、db
3、主從配置
return [
'class' => 'yii\db\Connection',
// 配置從伺服器
'slaveConfig' => [
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'tablePrefix' => '',
'attributes' => [
PDO::ATTR_TIMEOUT => 10,
],
],
// 配置從伺服器組
'slaves' => [
['dsn' => 'mysql:host=localhost;dbname=chunyun']
],
// 配置主伺服器
'masterConfig' => [
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'attributes' => [// use a smaller connection timeout
PDO::ATTR_TIMEOUT => 10,
],
],
// 配置主伺服器組
'masters' => [
['dsn' => 'mysql:host=localhost;dbname=gather'],
]
];
複制
以上是yii2對資料庫配置的應用。
4、model的方法應用
當然yii2還有一些CDB的類用法,createCommend寫sql這種我不是很推薦了,model自身會去綁定很多的功能讓大家去使用以及了解。
接下來介紹一些model的方法。
(1)beforeValidate方法
save操作之前一般會執行validate驗證方法,顧名思義:validate前做的操作,記住操作後必須傳回true。
可以在此操作中将一些字段賦上預設值之類的,這樣無需每次添加的時候都指派。
因為validate的方法有以下驗證
if (!$this->beforeValidate()) {
return false;
}
複制
相對應的還有afterValidate 這個方法我感覺有點雞肋
(2)beforeSave方法
這個一般屬于validate後,save前的方法,一般用來做條件用的,如save前必須什麼資料操作成功,
才能做另外一個save操作這種。當然是用場景多多,看你去使用吧。afterSave就不解釋了。
(3)查詢方面的建議
至于model的資料查詢我就不介紹了,這方面教程肯定挺多的。還有很多朋友會去糾結聯表的事情,
yii2的model裡支援聯表,但是從性能考慮,盡量避免聯表。
如何避免聯表:
如查詢文章清單,其中一項為分類名稱,通過list取出文章分類的清單,将相對應的分類清單中分類名稱,
這樣的操作比聯表效率要高。
如果非聯表不可的可以寫sql,便于以後的維護,構造的sql有有點也有缺點,自己去衡量取舍。
G
M
T
Detect languageAfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu | AfrikaansAlbanianArabicArmenianAzerbaijaniBasqueBelarusianBengaliBosnianBulgarianCatalanCebuanoChichewaChinese (Simplified)Chinese (Traditional)CroatianCzechDanishDutchEnglishEsperantoEstonianFilipinoFinnishFrenchGalicianGeorgianGermanGreekGujaratiHaitian CreoleHausaHebrewHindiHmongHungarianIcelandicIgboIndonesianIrishItalianJapaneseJavaneseKannadaKazakhKhmerKoreanLaoLatinLatvianLithuanianMacedonianMalagasyMalayMalayalamMalteseMaoriMarathiMongolianMyanmar (Burmese)NepaliNorwegianPersianPolishPortuguesePunjabiRomanianRussianSerbianSesothoSinhalaSlovakSlovenianSomaliSpanishSundaneseSwahiliSwedishTajikTamilTeluguThaiTurkishUkrainianUrduUzbekVietnameseWelshYiddishYorubaZulu |
---|
Text-to-speech function is limited to 200 characters
Options : History : Feedback : Donate | Close |
---|