详解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 常用字符串函数总结
Mar 15 PHP
php 如何获取数组第一个值
Aug 06 PHP
PHP中array_map与array_column之间的关系分析
Aug 19 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
php支付宝手机网页支付类实例
Mar 04 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
php中的钩子理解及应用实例分析
Aug 30 PHP
Laravel 框架返回状态拦截代码
Oct 18 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中字符安全过滤函数使用小结
2015/02/25 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
javascript第一课
2007/02/27 Javascript
Jquery ui css framework
2010/06/28 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
jQuery图片播放8款精美插件分享
2013/02/17 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
vue中多个倒计时实现代码实例
2019/03/27 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
python 生成器协程运算实例
2017/09/04 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
pandas DataFrame 删除重复的行的实现方法
2019/01/29 Python
Django基础知识 URL路由系统详解
2019/07/18 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
详解python tkinter 图片插入问题
2020/09/03 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
婚礼主持结束词
2014/03/13 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
个人求职自荐信范文
2014/06/20 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
大学生村官入党自传
2015/06/26 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
股东合作协议书模板2篇
2019/11/05 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL