Home > PHP Framework > ThinkPHP > body text

Thinkphp5 multi-database configuration introduction

Release: 2020-04-28 09:11:03
forward
3786 people have browsed it

Thinkphp5 multi-database configuration introduction

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

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

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

<?php
use think\Db;
$verify1 = Db::connect(&#39;db_config1&#39;)->table(&#39;tablename&#39;)->where([
   [&#39;username&#39;,&#39;=&#39;,$username],
   [&#39;password&#39;,&#39;=&#39;,$password],
])->find();
 
$verify2 = Db::connect(&#39;db_config2&#39;)->table(&#39;tablename&#39;)->where([
   [&#39;username&#39;,&#39;=&#39;,$username],
   [&#39;password&#39;,&#39;=&#39;,$password],
])->find();
Copy after login

推荐教程:《TP5

The above is the detailed content of Thinkphp5 multi-database configuration introduction. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!