作者:白狼 出处:http://www.manks.top/article/yii2_%E5%88%86%E5%BA%93%E5%88%86%E8%A1%A8_config 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

关于yii2配置操作多个数据库进行操作,文档上面也给出了具体的配置,一个实战性的例子,也是很简单的,我们这里以权限控制为单个管理库dbname2,业务库dbname 为例来看看如何配置多个数据库。
No1. 第一步,我们参照大部分百度的文档进行操作即可。

'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=ip;dbname=dbname',
'username' => 'username',
'password' => 'pwd',
'charset' => 'utf8',
],
'db2' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=ip;dbname=dbname2',
'username' => 'username',
'password' => 'pwd',
'charset' => 'utf8',
],
],

No2.第二步,这里我们打开配置文件 main.php ,对 authManager 选项增加四个权限关联的数据表的配置。

'authManager' => [
'class' => 'yii\rbac\DbManager',
'defaultRoles' => ['guest'],
'itemTable' => 'dbname2.auth_item',
'itemChildTable' => 'dbname2.auth_item_child',
'assignmentTable' => 'dbname2.auth_assignment',
'ruleTable' => 'dbname2.auth_rule',
],

其实这里配置的是 vendor\yiisoft\yii2\rbac\DbManager.php类的四个属性,这里理应向上面一致,直接更改项目配置文件。
No3.到这里其实就差不多了,那有同学疑问了,我这还没看呢,怎么就结束了呢?那那那你说我这user表和menu表怎么办?别急,我们来看看第三个步骤:
这一步也是很简单滴,我们向下面这样简单配置下就ok了
找到你项目的config\params.php文件,添加下面的配置项就好

'mdm.admin.configs' => [
'menuTable' => 'dbname2.menu',
// 'userTable' => 'dbname2.user',
],

注意啦,上面这个为啥配置项 userTable屏蔽了呢,这个要看个人的配置,打开文件 vendor\mdmsoft\yii2-admin\components\Configs.php文件,查看下有没有userTable属性,如果有,这里就需要配置,如果没有,你配置试试报不报错
还差一步,最后最后一步,也是个例子说明哦。
我们以上面的userTable为例,如果我们用gii生成了一个model文件User.php,因为默认配置的表是位于dbname库的,而我们的user表是dbname2库中的表,所以呢,我们需要修改User.php 这个model文件的tableName方法,表前面加库名即可。

public static function tableName()
{
return 'dbname.user';
}

有脑残粉要问了,那那那这里的 auth_item 等表用不用也这样操作喃,答案当然是No啦,因为我们这里采用的是rbac和yii2-admin配置的权限管理机制,上面的配置项其实我们都已经制定好啦。
什么,你没看懂,那啥啥啥配置,啥啥啥vendor\mdmsoft你的项目木有,我猜你系统的权限控制木有做好,哈哈。

yii2使用多个数据库的案例的更多相关文章

  1. yii2 使用多个数据库的案例

    配置: 'components' => [ 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=ip; ...

  2. Yii2.0高级框架数据库增删改查的一些操作(转)

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  3. Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...

  4. 数据库优化案例——————某市中心医院HIS系统

    记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也开始分享自己做的优化案例. 最近一直很忙,博客产出也少的 ...

  5. 数据库实战案例—————记一次TempDB暴增的问题排查

    前言 很多时候数据库的TempDB.日志等文件的暴增可能导致磁盘空间被占满,如果日常配置不到位,往往会导致数据库故障,业务被迫中断. 这种文件暴增很难排查,经验不足的一些运维人员可能更是无法排查具体原 ...

  6. 【JSP】JSP与oracle数据库交互案例

    ************************************************************************ ****原文:blog.csdn.net/clark_ ...

  7. 关于Excel数据批量导入数据库的案例

    写这个案例主要是感觉这个功能挺实用,很多地方会用得到的,废话就不多说了,直接上对应的源码. 这个案例我运用的是Winform窗体程序实现数据的导入. 首先是数据库的登陆界面如下: 源码如下: usin ...

  8. 数据库优化案例——————某知名零售企业ERP系统

    写在前面 记得在自己学习数据库知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的.这也是为什么自己特别喜欢看案例,今天也分享自己做的优化案例. 之前分享过OA系统.H ...

  9. Django_简单的数据库交互案例

    https://www.jianshu.com/p/bd0af02e59ba 一.页面展示 做一个简单的数据库交换的练习案例   页面.png 二.创建mysql 表 (1)创建django (2)创 ...

随机推荐

  1. jQuery Mobile动态刷新页面样式

    当我们使用Ajax或者javascript动态在页面上添加元素后,如添加select控件的option元素,添加ul的li元素.添加之后我们会发现,它们显示的样式不是jQuery Mobile的炫酷样 ...

  2. QTableWidget的美化

      FriendTable->setFrameShape(QFrame::NoFrame);  //设置边框 FriendTable->setHorizontalHeaderLabels( ...

  3. 介绍开源的.net通信框架NetworkComms框架 源码分析(十七 ) ConnectionSendClose

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  4. C++学习笔记13:运算符重载(赋值操作符2)

    移动语义 完成所有权的移交,当拷贝构造和赋值构造时,目标对象的所有权必须移交给我们的新的对象,原始对象将丧失所有权,_p指针将不再指向原来的那个数组: 左值与右值 C原始定义 左值:可以出现在赋值号的 ...

  5. IT职业思考 谈谈IT外包公司

    个人能力强才是王道 1. 为什么像BAT.HP.IBM.华为这些大公司还需要外包,他们已经有那么多的技术人员 一个公司,如果没有那么多项目,光养这些技术人员,实际的经营成本确实不低,但是这些技术人员又 ...

  6. SQL语句操作数据-------开启旅程路线喽!

    岁月,是一首诗,一首蕴含丰富哲理的诗,岁月是一峰骆驼,驮着无数人的梦想. 一.SQL的简介 SQL的全称是“结构化查询语言”(Structure Query Language),SQL语言是针对数据库 ...

  7. zDialog 可拖拽弹出层

    zDialog弹出框: 代替window.open.window.alert.window.confirm:提供良好的用户体验: 水晶质感,设计细腻,外观漂亮: 兼容ie6/7/8.firefox2/ ...

  8. 20个免费的 JavaScript 游戏引擎分享给开发者

    这篇文章收集了20个免费的 JavaScript 游戏引擎分享给开发者.这些游戏引擎能够帮助游戏开发人员更快速高效的开发出各种好玩的游戏. 使用 HTML5.CSS3 和 Javascript 可以帮 ...

  9. 【HTML5】Canvas图像

    把一幅图像放置到画布上, 使用以下方法: drawImage(Img,x,y); 注:这里的Img必须是一个图像对象.   显示一个canvas图像: <!DOCTYPE html> &l ...

  10. JAVASCRIPT实现简单计算器

    最终效果如下图-2,有bug:就是整数后点击%号结果正确,如果小数后面点击%的话结果就错误!其他都正常,求指点:input的value是string类型的,在JS中改如何正确处理下图-1中的if部分? ...