yii2多mysql配置文件_yii2的model数据库配置以及应用

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有有点也有缺点,自己去衡量取舍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值