关于框架中模块多数据库调用的方法探讨

自己手中接到一个项目,是需要链接多个数据库的,结合百度的经验和自己的实践操作,分享一点小心得给大家。
首先我复制了application目录中的database.php,然后命名为database2.php,我的数据库是pgsql的
<?php
return [
// 数据库类型
'type' => 'pgsql',
// 服务器地址
'hostname' => '172.2.2.254',
// 数据库名
'database' => 'cmsdb',
// 用户名
'username' => 'postgres',
// 密码
'password' => 'postgres',
// 端口
'hostport' => '5432',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => 'dp_',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => false,
// 数据集返回类型
'resultset_type' => 'array',
// 自动写入时间戳字段
'auto_timestamp' => false,
// 时间字段取出后的默认时间格式
'datetime_format' => false,
// 是否需要进行SQL性能分析
'sql_explain' => false,
];
然后修改application/config.php
增加以下代码:
$db_hikvision = require_once('database2.php');
//海康数据库配置
'db_hikvision' => $db_hikvision,
这样配置部分就配置好了。
项目里面调用的时候就直接使用以下命令
$data_list = Db::connect('db_hikvision')
->table('oc_person')
->where($map)
->order($order)
->paginate();
如果不加connect('db_hikvision')那么仍旧连接的是默认的数据库配置,希望能对大家有帮助!
当然在用thinkphp连接pgsql的时候,请在pgsql里面执行下:thinkphp\library\think\db\connector\pgsql.slq 这个文件

1 个评论

这个是我的配置方式。
config.php 文件添加:
'db_config_pay' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'pay',
// 用户名
'username' => 'pay',
// 密码
'password' => 'pay',
// 数据库编码默认采用utf8
'charset' => 'utf8mb4',
// 数据库表前缀
'prefix' => 'dp_',
],

使用:
db('payment_account',config('db_config_pay'))->where($where)->find();

要回复文章请先登录注册