ThinkPHP6连接多个数据库方法
应用配置目录下面的database.php中的数据库参数:
可以在数据库配置文件中定义多个连接信息
return [ // 默认使用的数据库连接配置 'default' => 'mysql', // 自定义时间查询规则 'time_query_rule' => [], // 自动写入时间戳字段 'auto_timestamp' => true, // 时间字段取出后的默认时间格式 'datetime_format' => 'Y-m-d H:i:s', // 数据库连接配置信息 'connections' => [ 'mysql' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'test', // 用户名 'username' => 'root', // 密码 'password' => '123456', // 端口 'hostport' => '3306', // 数据库连接参数 'params' => [], // 数据库编码默认采用 utf8 'charset' => 'utf8mb4', // 数据库表前缀 'prefix' => '', // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, // 数据库读写是否分离 主从式有效 'rw_separate' => false, // 读写分离后 主服务器数量 'master_num' => 1, // 指定从服务器序号 'slave_no' => '', // 检查字段是否存在 'fields_strict' => true, // 是否需要断线重连 'break_reconnect' => false, // 监听SQL执行日志 'trigger_sql' => true, // 开启字段类型缓存 'fields_cache' => isOnline(), ], 'sqlite' => [ 'charset' => 'utf8', // 数据库类型 'type' => 'sqlite', // 数据库文件 'database' => syspath('database/sqlite.db'), // 监听执行日志 'trigger_sql' => true, // 其他参数字段 'deploy' => 0, 'prefix' => '', 'hostname' => '', 'hostport' => '', 'username' => '', 'password' => '', ], /** * 配置第二个数据库 */ 'demo' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'demo', // 用户名 'username' => 'demo', // 密码 'password' => '123456', // 端口 'hostport' => '3306', // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => 'le_', ] ], ];
调用第二个数据库的方法 Db::connect 方法动态配置数据库连接信息
\think\facade\Db::connect('demo') ->table('news') ->find();
如果某个模型类里面定义了connection属性的话,则该模型操作的时候会自动按照给定的数据库配置进行连接,而不是配置文件中设置的默认连接信息,例如:
<?php namespace app\index\model; use think\Model; class User extends Model { protected $connection = 'demo'; }