thinkcmf8连接多个数据库
在应对不同的数据源、读写分离、水平扩展、灾难恢复和数据分片等业务的时候,需要用到对多个数据库链接。
操作方案如下:
配置方案
打开/data/conf/config.php,在connections数组下,添加新的值。
'mysql2' => [
// 数据库类型
'type' => env('DATABASE_TYPE2', 'mysql'),
// 服务器地址
'hostname' => env('DATABASE_HOSTNAME2', '127.0.0.1'),
// 数据库名
'database' => env('DATABASE_DATABASE2', 'thinkcmf'),
// 用户名
'username' => env('DATABASE_USERNAME2', 'root'),
// 密码
'password' => env('DATABASE_PASSWORD2', 'root'),
// 端口
'hostport' => env('DATABASE_HOSTPORT2', '3306'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => env('DATABASE_CHARSET2', 'utf8mb4'),
// 数据库表前缀
'prefix' => env('DATABASE_PREFIX2', 'cmf_'),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => env('APP_DEBUG', false),
// 开启字段缓存
'fields_cache' => false,
// 字段缓存路径
'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
],调用方法
在需要的地方mysql2数据库里的user表
db('user','mysql2')->select();如想在model模型里使用,代码如下
class UserModel extends Model
{
protected $name ='user';
protected $connection='mysql2';
}

