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
相关文章
相关标签/搜索