详解yii2使用多个数据库的案例


Posted in PHP onJune 16, 2017

关于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配置的权限管理机制,上面的配置项其实我们都已经制定好啦。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP开发框架总结收藏
Apr 24 PHP
PHP Mysql编程之高级技巧
Aug 27 PHP
php设计模式小结
Feb 15 PHP
采用memcache在web集群中实现session的同步会话
Jul 05 PHP
php通过strpos查找字符串出现位置的方法
Mar 17 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
ZendFramework框架实现连接两个或多个数据库的方法
Dec 08 PHP
PDO::rollBack讲解
Jan 29 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 #PHP
详解Yii2 之 生成 URL 的方法
Jun 16 #PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 #PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 #PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 #PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 #PHP
php实现的二叉树遍历算法示例
Jun 15 #PHP
You might like
PHP IPV6正则表达式验证代码
2010/02/16 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
2011/04/20 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
php最简单的删除目录与文件实现方法
2014/11/28 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
Node.js中的流(Stream)介绍
2015/03/30 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
Python 调用DLL操作抄表机
2009/01/12 Python
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
Python中防止sql注入的方法详解
2017/02/25 Python
在Django中URL正则表达式匹配的方法
2018/12/20 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
Python 带星号(* 或 **)的函数参数详解
2021/02/23 Python
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
HTML5 localStorage使用总结
2017/02/22 HTML / CSS
计算机软件个人的自荐信范文
2013/12/01 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
2016年十一促销广告语
2016/01/28 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python