详解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函数解决SQL injection
Oct 09 PHP
十天学会php之第四天
Oct 09 PHP
php flv视频时间获取函数
Jun 29 PHP
php 代码优化之经典示例
Mar 24 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
浅谈php扩展imagick
Jun 02 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
Dec 15 PHP
php中Snoopy类用法实例
Jun 19 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
php查询操作实现投票功能
May 09 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP 二维数组根据某个字段排序的具体实现
2014/06/03 PHP
yii操作session实例简介
2014/07/31 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
js格式化时间的方法
2015/12/18 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
Python中的集合介绍
2019/01/28 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
keras的siamese(孪生网络)实现案例
2020/06/12 Python
Python字符串及文本模式方法详解
2020/09/10 Python
大一自我鉴定范文
2013/10/04 职场文书
总经理秘书的岗位职责
2013/12/27 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
办公经费申请报告
2015/05/15 职场文书
仓库管理制度范本
2015/08/04 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL