详解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学习 字符串课件
Jun 15 PHP
php写的简易聊天室代码
Jun 04 PHP
php入门学习知识点四 PHP正则表达式基本应用
Jul 14 PHP
ajax取消挂起请求的处理方法
Mar 18 PHP
PHP截断标题且兼容utf8和gb2312编码
Sep 22 PHP
PHP使用feof()函数读文件的方法
Nov 07 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
centos 7.2下搭建LNMP环境教程
Nov 20 PHP
PHP大文件分割上传 PHP分片上传
Aug 28 PHP
PHP的mysqli_thread_id()函数讲解
Jan 24 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采集利器 Snoopy 试用心得
2011/07/03 PHP
PHP高级对象构建 工厂模式的使用
2012/02/05 PHP
thinkphp的静态缓存用法分析
2014/11/29 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
cookie的secure属性详解
2015/04/08 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
Vue.js每天必学之计算属性computed与$watch
2016/09/05 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
node Buffer缓存区常见操作示例
2019/05/04 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
通俗讲解python 装饰器
2020/09/07 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
HTML5在线预览PDF的示例代码
2017/09/14 HTML / CSS
塑料制成的可水洗的编织平底鞋和鞋子:Rothy’s
2018/09/16 全球购物
网站客服岗位职责
2014/04/05 职场文书
学校爱心捐款倡议书
2014/05/13 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
python实现简单的聊天小程序
2021/07/07 Python
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers