详解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 相关文章推荐
Discuz! Passport 通行证整合
Mar 27 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
CodeIgniter基本配置详细介绍
Nov 12 PHP
PHP 如何获取二维数组中某个key的集合
Jun 03 PHP
PHP return语句另类用法不止是在函数中
Sep 17 PHP
php中explode函数用法分析
Nov 15 PHP
php中filter_input函数用法分析
Nov 15 PHP
php自定文件保存session的方法
Dec 10 PHP
PHP实现导出带样式的Excel
Aug 28 PHP
PHP 验证身份证是否合法的函数
Feb 09 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
Jun 09 PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 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
一个odbc连mssql分页的类
2006/10/09 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
PHP 实现重载
2021/03/09 PHP
JavaScript基本对象
2007/01/11 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
JavaScript中instanceof运算符的使用示例
2016/06/08 Javascript
实例讲解JavaScript中call、apply、bind方法的异同
2016/09/13 Javascript
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
keras slice layer 层实现方式
2020/06/11 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
Python常用数字处理基本操作汇总
2020/09/10 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
美国时尚在线:Showpo
2017/09/08 全球购物
俄语翻译实习生的自我评价分享
2013/11/06 职场文书
会计专业自荐信
2013/12/02 职场文书
法律专业学生的自我评价
2014/02/07 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
小学德育工作总结2015
2015/05/12 职场文书
人代会简报
2015/07/21 职场文书
Javascript使用integrity属性进行安全验证
2021/11/07 Javascript
Golang map映射的用法
2022/04/22 Golang