博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
yii2的model数据库配置以及应用(主从数据库配置)
阅读量:6322 次
发布时间:2019-06-22

本文共 3646 字,大约阅读时间需要 12 分钟。

hot3.png

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

转载于:https://my.oschina.net/botkenni/blog/1805371

你可能感兴趣的文章
python文件操作学习笔记
查看>>
朗科实习期间心得笔记(六)
查看>>
iphone编程指南学习笔记2
查看>>
NFS服务配置
查看>>
中级篇第九期:相册与拍照初使用
查看>>
我的友情链接
查看>>
lvs 一个网卡单个管理ip,多个跨网段VIP解决办法
查看>>
自定义圆角button
查看>>
超长正整数相加
查看>>
Centos 6 编译内核支持LVS-SNAT模式
查看>>
JAVA数据类型
查看>>
TCP segment of a reassembled PDU
查看>>
hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]...
查看>>
【Oracle】oracle中快速判断某一日期是闰年或平年
查看>>
datatable 转 json 格式
查看>>
vs2010生成Dll文件并引用dll(C#)
查看>>
藏在兰州拉面里精益管理秘诀
查看>>
How to blog on Github
查看>>
百思不得姐 one day
查看>>
19.04.16--指针笔记-参数传递
查看>>