详解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 17 PHP
在MongoDB中模拟Auto Increment的php代码
Mar 06 PHP
PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
Sep 19 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
php实现mysql封装类示例
May 07 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
CI框架数据库查询缓存优化的方法
Nov 21 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 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读取TXT文件向数据库导入海量数据的方法
2013/04/23 PHP
解析PHP提交后跳转
2013/06/23 PHP
PHP中使用BigMap实例
2015/03/30 PHP
PHP中类的自动加载的方法
2017/03/17 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
javascript瀑布流式图片懒加载实例解析与优化
2016/02/23 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
bootstrap table实现x-editable的行单元格编辑及解决数据Empty和支持多样式问题
2017/08/10 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网
2019/05/16 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
2020/08/06 Javascript
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
使用Python制作一盏 3D 花灯喜迎元宵佳节
2021/02/26 Python
网络教育毕业生自我鉴定
2013/10/10 职场文书
公司年底活动方案
2014/08/17 职场文书
工会工作先进事迹
2014/08/18 职场文书
法定授权委托证明书
2014/09/27 职场文书
师德师风剖析材料
2014/09/30 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
植树节新闻稿
2015/07/17 职场文书
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python