详解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 中include()与require()的对比
Oct 09 PHP
木翼下载系统中说明的PHP安全配置方法
Jun 16 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
Jun 30 PHP
php实现两表合并成新表并且有序排列的方法
Dec 05 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
Mar 22 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
php 使用redis锁限制并发访问类示例
Nov 02 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 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写杨辉三角实例代码
2011/07/17 PHP
php中AES加密解密的例子小结
2014/02/18 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
Gambit vs ForZe BO3 第二场 2.13
2021/03/10 DOTA
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
JS实现很实用的对联广告代码(可自适应高度)
2015/09/18 Javascript
谈谈Jquery中的children find 的区别有哪些
2015/10/19 Javascript
js实现继承的5种方式
2015/12/01 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
Javascript动画效果(4)
2016/10/11 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
js获取css的各种样式并且设置他们的方法
2017/08/22 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
关于Js中new操作符的作用详解
2021/02/21 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
解决python gdal投影坐标系转换的问题
2020/01/17 Python
Python实现井字棋小游戏
2020/03/09 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
医学检验专业大学生求职信
2013/11/18 职场文书
《四季》教学反思
2014/04/08 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
旷课检讨书
2015/01/26 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
windows server2008 开启端口的实现方法
2022/06/25 Servers