详解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 相关文章推荐
深入了解php4(2)--重访过去
Oct 09 PHP
MySQL授权问题总结
May 06 PHP
简单的PHP留言本实例代码
May 09 PHP
windows下zendframework项目环境搭建(通过命令行配置)
Dec 06 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
Dec 18 PHP
PHP数字金额转换成中文大写显示
Jan 05 PHP
php时间戳转换代码详解
Aug 04 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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/10/26 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
PHP实现的简单对称加密与解密方法实例小结
2017/08/28 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
JS异步加载的三种实现方式
2017/03/16 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
详解vue 命名视图
2019/08/14 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
JS+HTML实现自定义上传图片按钮并显示图片功能的方法分析
2020/02/12 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
python使用KNN算法手写体识别
2018/02/01 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
Python的log日志功能及设置方法
2019/07/11 Python
python conda操作方法
2019/09/11 Python
python获取网络图片方法及整理过程详解
2019/12/20 Python
Python 自由定制表格的实现示例
2020/03/20 Python
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
目标责任书范文
2014/04/14 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
创业计划书之烤红薯
2019/09/26 职场文书
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python