详解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的面试题集
Nov 19 PHP
PHP源代码数组统计count分析
Aug 02 PHP
调整PHP的性能
Oct 30 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
Jul 28 PHP
php实现redis数据库指定库号迁移的方法
Jan 14 PHP
6个超实用的PHP代码片段
Aug 10 PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 PHP
基于PHP常用文件函数和目录函数整理
Aug 17 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
Jul 21 PHP
Windows服务器中PHP如何安装redis扩展
Sep 27 PHP
laravel执行php artisan migrate报错的解决方法
Oct 09 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
浅谈json_encode用法
2015/03/05 PHP
PHP模板解析类实例
2015/07/09 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
如何让div span等元素能响应键盘事件操作指南
2012/11/13 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
运用jQuery定时器的原理实现banner图片切换
2014/10/22 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
vue 设置路由的登录权限的方法
2018/07/03 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
python中np是做什么的
2020/07/21 Python
Django Form常用功能及代码示例
2020/10/13 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
施华洛世奇水晶荷兰官方网站:SWAROVSKI荷兰
2017/05/12 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
医大实习自我鉴定
2013/12/07 职场文书
英语专业求职信
2014/07/08 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
2015年董事长秘书工作总结
2015/07/23 职场文书
大学学生会竞选稿
2015/11/19 职场文书
小学大队干部竞选稿
2015/11/20 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL