一、如果你的主数据库配置文件都在config.php里
直接在config.php
中中定义db2
:
控制器中打印一下:
<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
use think\Request;
class Index extends Controller
{public function index(){//连接默认的数据库$db1=Db::name('users')->select();//连接定义的第二个数据库$db2=Db::connect('db2');$result=$db2->name('ceshi')->select();print_r($result);die;return view('index');}
}
二、如果你的主数据库配置在database.php里
在 application/database.php 中,添加:
/*** 配置第二个数据库*/
'db2' => [// 数据库类型'type' => Env::get('database2.type', 'mysql'),// 服务器地址'hostname' => Env::get('database2.hostname', '127.0.0.1'),// 数据库名'database' => Env::get('database2.database', ''),// 用户名'username' => Env::get('database2.username', ''),// 密码'password' => Env::get('database2.password', ''),// 端口'hostport' => Env::get('database2.hostport', ''),// 连接dsn'dsn' => '',// 数据库连接参数'params' => [],// 数据库编码默认采用 utf8mb4'charset' => Env::get('database2.charset', 'utf8mb4'),// 数据库表前缀'prefix' => Env::get('database2.prefix', ''),// 数据库调试模式'debug' => Env::get('database2.debug', false),// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)'deploy' => 0,// 数据库读写是否分离 主从式有效'rw_separate' => false,// 读写分离后 主服务器数量'master_num' => 1,// 指定从服务器序号'slave_no' => '',// 是否严格检查字段是否存在'fields_strict' => true,// 数据集返回类型'resultset_type' => 'array',// 自动写入时间戳字段'auto_timestamp' => false,// 时间字段取出后的默认时间格式,默认为Y-m-d H:i:s'datetime_format' => false,// 是否需要进行SQL性能分析'sql_explain' => false,]
整个 database.php 文件如下,
<?phpuse think\Env;return [// 数据库类型'type' => Env::get('database.type', 'mysql'),// 服务器地址'hostname' => Env::get('database.hostname', '127.0.0.1'),// 数据库名'database' => Env::get('database.database', ''),// 用户名'username' => Env::get('database.username', ''),// 密码'password' => Env::get('database.password', ''),// 端口'hostport' => Env::get('database.hostport', ''),// 连接dsn'dsn' => '',// 数据库连接参数'params' => [],// 数据库编码默认采用 utf8mb4'charset' => Env::get('database.charset', 'utf8mb4'),// 数据库表前缀'prefix' => Env::get('database.prefix', ''),// 数据库调试模式'debug' => Env::get('database.debug', false),// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)'deploy' => 0,// 数据库读写是否分离 主从式有效'rw_separate' => false,// 读写分离后 主服务器数量'master_num' => 1,// 指定从服务器序号'slave_no' => '',// 是否严格检查字段是否存在'fields_strict' => true,// 数据集返回类型'resultset_type' => 'array',// 自动写入时间戳字段'auto_timestamp' => false,// 时间字段取出后的默认时间格式,默认为Y-m-d H:i:s'datetime_format' => false,// 是否需要进行SQL性能分析'sql_explain' => false,/*** 配置第二个数据库*/'db2' => [// 数据库类型'type' => Env::get('database2.type', 'mysql'),// 服务器地址'hostname' => Env::get('database2.hostname', '127.0.0.1'),// 数据库名'database' => Env::get('database2.database', ''),// 用户名'username' => Env::get('database2.username', ''),// 密码'password' => Env::get('database2.password', ''),// 端口'hostport' => Env::get('database2.hostport', ''),// 连接dsn'dsn' => '',// 数据库连接参数'params' => [],// 数据库编码默认采用 utf8mb4'charset' => Env::get('database2.charset', 'utf8mb4'),// 数据库表前缀'prefix' => Env::get('database2.prefix', ''),// 数据库调试模式'debug' => Env::get('database2.debug', false),// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)'deploy' => 0,// 数据库读写是否分离 主从式有效'rw_separate' => false,// 读写分离后 主服务器数量'master_num' => 1,// 指定从服务器序号'slave_no' => '',// 是否严格检查字段是否存在'fields_strict' => true,// 数据集返回类型'resultset_type' => 'array',// 自动写入时间戳字段'auto_timestamp' => false,// 时间字段取出后的默认时间格式,默认为Y-m-d H:i:s'datetime_format' => false,// 是否需要进行SQL性能分析'sql_explain' => false,]
];
.env文件配置如下:
[app]
debug = false
trace = false[database]
hostname = 127.0.0.1
database = db1
username = db1
password = 123456
hostport = 3306
prefix = data1_
charset = utf8mb4[database2]
hostname = 127.0.0.1
database = db2
username = db2
password = 123456
hostport = 3306
prefix = data2_
charset = utf8mb4
控制器中:
<?php$db2 = Db::connect(config('database.db2'));
$res = $db2->name("user")->where(['status' => 1])->select();dump($res);exit();