## 连接多个数据库 通常需求中连接两个数据库有以下两种情况: - 两个库都频繁使用。 - 只有一个库频繁使用,另一个只有少数业务使用。 ## 两个库都频繁使用 >[info] 配置一个新的 app()->db2 的组件调用另一个数据库 请阅读以下章节: - 核心基础 > Component - 客户端 > Database 组件配置: ~~~ // 数据库 'db2' => [ // 依赖引用 'ref' => 'pdo2', ], ~~~ 依赖配置: ~~~ // 数据库 [ // 名称 'name' => 'pdo2' // 类路径 'class' => Mix\Database\Persistent\PDOConnection::class, // 属性 'properties' => [ // 数据源格式 'dsn' => env('DATABASE_DSN2'), // 数据库用户名 'username' => env('DATABASE_USERNAME2'), // 数据库密码 'password' => env('DATABASE_PASSWORD2'), // 驱动连接选项: http://php.net/manual/zh/pdo.setattribute.php 'driverOptions' => [ // 设置默认的提取模式: \PDO::FETCH_OBJ | \PDO::FETCH_ASSOC \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, ], ], ], ~~~ 代码中调用: ``` $db = app()->db2; ``` ## 只有一个库频繁使用,另一个只有少数业务使用 >[info] 通过依赖注入直接实例化 PDOConnection 对象调用另一个数据库 请阅读以下章节: - 核心基础 > Bean - 客户端 > Database 依赖配置: ~~~ // 数据库 [ // 名称 'name' => 'pdo2' // 类路径 'class' => Mix\Database\Persistent\PDOConnection::class, // 属性 'properties' => [ // 数据源格式 'dsn' => env('DATABASE_DSN2'), // 数据库用户名 'username' => env('DATABASE_USERNAME2'), // 数据库密码 'password' => env('DATABASE_PASSWORD2'), // 驱动连接选项: http://php.net/manual/zh/pdo.setattribute.php 'driverOptions' => [ // 设置默认的提取模式: \PDO::FETCH_OBJ | \PDO::FETCH_ASSOC \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, ], ], ], ~~~ 代码中调用: ``` $db = \Mix\Database\Persistent\PDOConnection::newInstance('pdo2'); ```