Yii框架多个数据库操作指南
十载的榆林网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整榆林建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“榆林网站设计”,“榆林网站推广”以来,每个客户项目都认真落实执行。
Yii框架是一款高效、安全、灵活的开源Web应用程序开发框架,拥有完善的文档和丰富的社区资源,广受开发者的欢迎和喜爱。Yii框架的核心思想是快速开发,高效性能,易用性和可扩展性。其中,在多个数据库操作方面,Yii框架也提供了很好的支持,本篇文章将详细介绍Yii框架中多个数据库操作指南。
一、操作多个数据库
在实际应用中,往往需要同时连接多个数据库,例如一个系统的用户信息储存在一个数据库,而另一个数据储存了业务数据,或者说一个用户应用程序在地理位置不同的数据中心中分别连接了不同的数据库,这时候Yii框架可以帮我们轻松完成这些极具挑战性的任务。
1.连接配置
Yii框架中多个数据库操作之前需先设置不同的数据库连接arrays配置,具体代码如下:
return [
‘components’ => [
‘db’ => [
‘class’ => ‘yii\db\Connection’,
‘dsn’ => ‘mysql:host=localhost;dbname=dbname’,
‘username’ => ‘root’,
‘password’ => ”,
‘charset’ => ‘utf8’,
],
‘db2’ => [
‘class’ => ‘yii\db\Connection’,
‘dsn’ => ‘mysql:host=localhost;dbname=dbname2’,
‘username’ => ‘root’,
‘password’ => ”,
‘charset’ => ‘utf8’,
],
],
];
2.使用不同连接
在使用不同的连接进行操作时,我们需要在执行操作时明确指定应该使用的连接名,只需在查询或命令对象上调用wiyhDb():
$results = Yii::$app->db->createCommand(‘SELECT * FROM user’)->queryAll();
$results2 = Yii::$app->db2->createCommand(‘SELECT * FROM order’)->queryAll();
二、进行分布式、分表分库操作
对于较大的数据量和高并发的系统来说,我们往往需要对需要对数据库进行分布式、分表分库的操作,一方面可以避免单一节点性能瓶颈,另一方面也方便更好的调度、扩展等,这时候Yii框架也提供了很好的支持,使我们可以容易地把一张表分成多个分表分散到不同的门店中。
1.进行分表分库操作
在代码中进行分表分库操作时,我们需要做一些配置。在配置文件中定义不同的数据库连接数组:
return [
‘components’ => [
‘db’ => [
‘class’ => ‘yii\db\Connection’,
‘dsn’ => ‘mysql:host=localhost;dbname=dbname’,
‘username’ => ‘root’,
‘password’ => ”,
‘charset’ => ‘utf8’,
],
‘db_order’ => [
‘class’ => ‘yii\db\Connection’,
‘dsn’ => ‘mysql:host=localhost;dbname=dbname2’,
‘username’ => ‘root’,
‘password’ => ”,
‘charset’ => ‘utf8’,
],
],
];
然后,我们可以通过以下代码进行分表操作:
Yii::$app->db->createCommand()->insert(‘t_order_’.($id%10), [
‘id’ => $id,
‘customer_id’ => $customerId,
‘amount’ => $amount,
])->execute();
在上述代码中,我们对分表进行了分表分库操作,其中insert()方法我们传递分表分库后的表名,这样我们的数据就能分散到不同数据库下不同的表中。
2.进行分布式操作
在分布式数据库中,我们可以建立多个节点,每个节点之间互相独立,例如大型电商网站的订单数据库,就可以在不同的节点根据会员地理位置生成相应的订单数据库,这时候在Yii框架中操作就比较容易了,只需根据MySQL的主从结构在配制文件中定义不同的从库和主库:
return [
‘components’ => [
‘db’ => [
‘class’ => ‘yii\db\Connection’,
‘dsn’ => ‘mysql:host=localhost;dbname=dbname’,
‘username’ => ‘root’,
‘password’ => ”,
‘charset’ => ‘utf8’,
],
‘db_order’ => [
‘class’ => ‘yii\db\Connection’,
‘dsn’ => ‘mysql:host=localhost;dbname=dbname2’,
‘username’ => ‘root’,
‘password’ => ”,
‘charset’ => ‘utf8’,
‘enableSlaves’ => true,
‘slaveConfig’ => [
‘username’ => ‘root’,
‘password’ => ”,
],
‘separates’ => [
‘table1’ => [
‘master’ => ‘db2’,
‘slaves’ => [
‘db3’,
‘db4’,
]
]
]
],
],
];
通过上述代码中的配制,我们就完成了分布式操作,在代码中执行操作时只需要指定配置文件的相应连接即可操作不同数据库。
三、使用事务
在 Yii 中,您可以通过 $ db->beginTransaction() 开始事务。在事务中执行的所有 SQL 查询都要使用同一数据库连接,这可以通过更改 $ command->db 属性或使用 $ db->createCommand() 方法来实现。
try {
$transaction = Yii::$app->db->beginTransaction();
Yii::$app->db->createCommand($sql1)->execute();
Yii::$app->db->createCommand($sql2)->execute();
// … executing other SQL statements …
$transaction->commit();
} catch (\Exception $e) {
$transaction->rollBack();
// … executing other exception handling methods …
}
到这里, 就结束了,如有不足,请大家多多指教,谢谢!
成都网站建设公司-创新互联为您提供网站建设、网站制作、网页设计及定制高端网站建设服务!
user那个表更新拍猛也是更新了两次,换句话说,你这个action被调用了两次。然后如果你用的ajax表单厅肢提交,你看下请求信息,袭伏桥把重复的请求去掉。如果是form提交,那就在保存成功后redirect一下。
yii 多数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于yii 多数据库,Yii 框架多个数据库操作指南,在yii中,当有多个models的实例保存时调用save()方法为什么会在数据库中重复创建数据呢?的信息别忘了在本站进行查找喔。
香港服务器选创新互联,香港虚拟主机被称为香港虚拟空间/香港网站空间,或者简称香港主机/香港空间。香港虚拟主机特点是免备案空间开通就用, 创新互联香港主机精选cn2+bgp线路访问快、稳定!
分享标题:Yii框架多个数据库操作指南(yii多数据库)
当前地址:http://www.shufengxianlan.com/qtweb/news48/484848.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联