thinkphp5多数据库配置介绍

thinkphp5多数据库配置介绍

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

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

惯例配置:核心框架内置的配置文件,无需更改。

应用配置:每个应用的全局配置文件(框架安装后会生成初始的应用配置文件),有部分配置参数仅能在应用配置文件中设置。

立即学习PHP免费学习笔记(深入)”;

模块配置:每个模块的配置文件(相同的配置参数会覆盖应用配置),有部分配置参数模块配置是无效的,因为已经使用过。

动态配置:主要是指在控制器或者行为中进行(动态)更改配置,该配置方式只在当次请求有效,因为不会保存到配置文件中。

TP5.1的数据库配置文件在applicationconfigdatabase.php中

当然,在application模块名configdatabase.php(模块配置)中的配置,优先级会比在applicationconfigdatabase.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'            =&gt; 'mysql',     // 服务器地址     'hostname'        =&gt; '127.0.0.1',     // 数据库名     'database'        =&gt; '',     // 用户名     'username'        =&gt; 'root',     // 密码     'password'        =&gt; '',     // 端口     'hostport'        =&gt; '',     // 连接dsn     'dsn'             =&gt; '',     // 数据库连接参数     'params'          =&gt; [],     // 数据库编码默认采用utf8     'charset'         =&gt; 'utf8',     // 数据库表前缀     'prefix'          =&gt; '',     // 数据库调试模式     'debug'           =&gt; true,     // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)     'deploy'          =&gt; 0,     // 数据库读写是否分离 主从式有效     'rw_separate'     =&gt; false,     // 读写分离后 主服务器数量     'master_num'      =&gt; 1,     // 指定从服务器序号     'slave_no'        =&gt; '',     // 自动读取主库数据     'read_master'     =&gt; false,     // 是否严格检查字段是否存在     'fields_strict'   =&gt; true,     // 数据集返回类型     'resultset_type'  =&gt; 'array',     // 自动写入时间戳字段     'auto_timestamp'  =&gt; false,     // 时间字段取出后的默认时间格式     'datetime_format' =&gt; 'Y-m-d H:i:s',     // 是否需要进行SQL性能分析     'sql_explain'     =&gt; false,     // Builder类     'builder'         =&gt; '',     // Query类     'query'           =&gt; 'thinkdbQuery',     // 是否需要断线重连     'break_reconnect' =&gt; false,     // 断线标识字符串     'break_match_str' =&gt; [],     'db_config1'      =&gt; [         // 数据库类型         'type'            =&gt; 'sqlsrv',         // 服务器地址         'hostname'        =&gt; '192.168.1.1',         // 用户名         'username'        =&gt; 'username',         // 密码         'password'        =&gt; 'passwd',         // 数据库名称         'database'        =&gt; 'dbname',     ],     'db_config2'      =&gt; [         // 数据库类型         'type'            =&gt; 'mysql',         // 服务器地址         'hostname'        =&gt; '192.168.1.2',         // 用户名         'username'        =&gt; 'username',         // 密码         'password'        =&gt; 'passwd',         // 数据库名称         'database'        =&gt; 'dbname',     ] ];

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

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

<?php use thinkDb; $verify1 = Db::connect(&#39;db_config1&#39;)->table('tablename')-&gt;where([    ['username','=',$username],    ['password','=',$password], ])-&gt;find();   $verify2 = Db::connect('db_config2')-&gt;table('tablename')-&gt;where([    ['username','=',$username],    ['password','=',$password], ])-&gt;find();

推荐教程:《TP5

以上就是

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享