yii2的model數據庫配置以及應用(主從數據庫配置)

一、多數據庫配置php

'db' => require(__DIR__ . '/db.php'),
  'gdb' => require(__DIR__ . '/gdb.php'),

db或gdb的配置文件以下:mysql

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',
    ];
}

二、 調用相應的數據庫web

/**
     * @return \yii\db\Connection the database connection used by this AR class.
     */
    public static function getDb()
    {
        return Yii::$app->get('gdb');
    }

固然您也能夠用gii進行建立,選擇鏈接池處會出現你多數據庫配置的相應db名稱。如gdb、dbsql

三、主從配置數據庫

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對數據庫配置的應用。服務器

四、model的方法應用
固然yii2還有一些CDB的類用法,createCommend寫sql這種我不是很推薦了,model自身會去綁定不少的功能讓你們去使用以及理解。
接下來介紹一些model的方法。
(1)beforeValidate方法
save操做以前通常會執行validate驗證方法,顧名思義:validate前作的操做,記住操做後必須返回true。
能夠在此操做中將一些字段賦上默認值之類的,這樣無需每次添加的時候都賦值。
由於validate的方法有如下驗證yii2

if (!$this->beforeValidate()) {
    return false;
}

相對應的還有afterValidate 這個方法我感受有點雞肋app

(2)beforeSave方法
這個通常屬於validate後,save前的方法,通常用來作條件用的,如save前必須什麼數據操做成功,yii

才能作另一個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
相關文章
相關標籤/搜索