thinkphp5如何优雅的配置多个数据库?

最近在用tp5写项目,有一个业务上的需求,需要连接两个数据库。这就需要在tp5中配置两个数据库了。

该怎么配置多个数据库呢?

查看开发手册 。这当然是一句废话,快速开发的第一要素就是查看手册。手册有提供了丰富多数据配置的方法,参考链接在文章结尾处,不多此一举雷述了。

但手册的方法会发现多个数据配置方式过于混乱,显得不够优雅。有一个专门配置数据库的文件database.php文件,但这个文件只能配置一个数据库信息,其他的数据库却要写在config.php这个应用配置文件上,这就有点乱了,并且config.php操作更改的频率是比较大,而数据库配置之后一般都不会改动,直接将数据库信息配置在config.php上不是一个明智之举。

那么该怎么配置,会显得好管理些呢?

重新起一个数据库配置文件,命名database2.php,然后再config.php读这个文件。这样数据库配置信息就不用直接塞到config.php中,对数据配置信息相对独立,避免对数据库信息误操作。

看项目配置截图:

database.php

比起直接在一堆数据库配置写到config.php是不是优雅很多了,逻辑上也清晰很多。

举一反三

从上述方法我们完全可以根据逻辑或者业务的需求来自定义配置文件,从而实现对配置文件有一个更好管理。

【参考】thinkphp多数据库的配置:https://www.kancloud.cn/manual/thinkphp5/118059;

 


==================== SQLServer多库切换(这个是在博客上看到的,亲试有用,分享给大家) ===========================

1、首先要连接上你的SQLServer;

2、将你配置好的database.php 文件复制一份,命名为 database2.php,并写入第二个数据库的配置;

3、在你的config.php文件中先引入 database2.php 文件(代码: $db_con2 = require_once('database2.php'); ),并在最后加上 'db_con2' => $db_con2, 

4、控制器里面就可以使用了
如:
$db = Db::connect('db_con2');
$db->query('select * from user');

(PS :附件里面是PHP的扩展,n2里面是php5的,n1里面是php7的,大家根据需要选择)
+++++++++++++++++ the end ++++++++++++++++++++

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
感谢您的提问。对于您的问题,您可以按照以下步骤来配置链接多个数据库,并查询数据: 1. 首先,在thinkphp5中,您需要在database.php配置文件中配置多个数据库连接信息,例如: ```php return [ 'db1' => [ // 数据库类型 'type' => 'mysql', // 数据库连接DSN配置 'dsn' => '', // 数据库连接参数 'params' => [], // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库编码默认采用utf8 'charset' => 'utf8mb4', ], 'db2' => [ // 数据库类型 'type' => 'mysql', // 数据库连接DSN配置 'dsn' => '', // 数据库连接参数 'params' => [], // 数据库用户名 'username' => 'root', // 数据库密码 'password' => '', // 数据库编码默认采用utf8 'charset' => 'utf8mb4', ], ]; ``` 2. 接下来,在需要使用不同数据库的地方,您可以使用Db类的connect方法来切换数据库连接,例如: ```php // 切换到db1数据库 Db::connect('db1')->name('user')->where('id', 1)->find(); // 切换到db2数据库 Db::connect('db2')->name('user')->where('id', 1)->find(); ``` 3. 最后,您可以使用查询构建器来执行数据库查询操作,例如: ```php // 查询db1数据库中的user表中id为1的记录 Db::connect('db1')->name('user')->where('id', 1)->find(); // 查询db2数据库中的user表中id为1的记录 Db::connect('db2')->name('user')->where('id', 1)->find(); ``` 希望我的回答对您有所帮助,如果您还有其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值