THINKPHP5.1多数据库配置
2022-07-28 14:14:58
207
{{single.collect_count}}

ThinkPHP遵循惯例重于配置的原则,系统会按照下面的顺序来加载配置文件(配置的优先顺序从右到左)。

惯例配置->应用配置->模块配置->动态配置

  • 惯例配置:核心框架内置的配置文件,无需更改。
  • 应用配置:每个应用的全局配置文件(框架安装后会生成初始的应用配置文件),有部分配置参数仅能在应用配置文件中设置。
  • 模块配置:每个模块的配置文件(相同的配置参数会覆盖应用配置),有部分配置参数模块配置是无效的,因为已经使用过。
  • 动态配置:主要是指在控制器或者行为中进行(动态)更改配置,该配置方式只在当次请求有效,因为不会保存到配置文件中。

 

TP5.1的数据库配置文件在application\config\database.php中

当然,在application\模块名\config\database.php(模块配置)中的配置,优先级会比在application\config\database.php(应用配置)中高

比如同时在模块配置和在应用配置中配置数据库连接,那么会优先使用模块配置,如果模块配置中没有,那么会去找应用配置中的配置信息。动态配置的优先级最高。

我们只需要在控制器和数据库配置文件中操作即可,无需用到模型

<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st <liu21st@gmail.com>// +----------------------------------------------------------------------return [// 数据库类型'type'=> 'mysql',// 服务器地址'hostname'=> '127.0.0.1',// 数据库名'database'=> '',// 用户名'username'=> 'root',// 密码'password'=> '',// 端口'hostport'=> '',// 连接dsn'dsn' => '',// 数据库连接参数'params'=> [],// 数据库编码默认采用utf8'charset' => 'utf8',// 数据库表前缀'prefix'=> '',// 数据库调试模式'debug' => true,// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)'deploy'=> 0,// 数据库读写是否分离 主从式有效'rw_separate' => false,// 读写分离后 主服务器数量'master_num'=> 1,// 指定从服务器序号'slave_no'=> '',// 自动读取主库数据'read_master' => false,// 是否严格检查字段是否存在'fields_strict' => true,// 数据集返回类型'resultset_type'=> 'array',// 自动写入时间戳字段'auto_timestamp'=> false,// 时间字段取出后的默认时间格式'datetime_format' => 'Y-m-d H:i:s',// 是否需要进行SQL性能分析'sql_explain' => false,// Builder类'builder' => '',// Query类'query' => '\\think\\db\\Query',// 是否需要断线重连'break_reconnect' => false,// 断线标识字符串'break_match_str' => [],'db_config1'=> [// 数据库类型'type'=> 'sqlsrv',// 服务器地址'hostname'=> '192.168.1.1',// 用户名'username'=> 'username',// 密码'password'=> 'passwd',// 数据库名称'database'=> 'dbname',],'db_config2'=> [// 数据库类型'type'=> 'mysql',// 服务器地址'hostname'=> '192.168.1.2',// 用户名'username'=> 'username',// 密码'password'=> 'passwd',// 数据库名称'database'=> 'dbname',]];

 db_config1和db_config2可以看作是两个不同的数据库连接

我们在控制器中就可以这样调用不同的数据库

<?phpuse think\Db;$verify1 = Db::connect('db_config1')->table('tablename')->where([ ['username','=',$username], ['password','=',$password],])->find();$verify2 = Db::connect('db_config2')->table('tablename')->where([ ['username','=',$username], ['password','=',$password],])->find();

 

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}