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 : | Close |