thinkphp5 database.php 配置文件中return中 配置多个数据库使用不了
时间: 2023-12-14 12:35:57 浏览: 82
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
在 ThinkPHP 5 中,可以通过在 `database.php` 配置文件中的 `connections` 数组中定义多个数据库连接来实现多库连接。例如:
```php
return [
// 默认数据库连接
'default' => 'mysql',
// 数据库连接列表
'connections' => [
'mysql' => [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'database1',
// 用户名
'username' => 'root',
// 密码
'password' => '',
// 端口
'hostport' => '',
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
],
'oracle' => [
// 数据库类型
'type' => 'oracle',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'database2',
// 用户名
'username' => 'root',
// 密码
'password' => '',
// 端口
'hostport' => '',
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
],
],
];
```
然后在使用数据库时,可以通过指定数据库连接的方式来连接不同的数据库。例如:
```php
// 使用 mysql 数据库连接查询
$users = Db::connect('mysql')->name('user')->select();
// 使用 oracle 数据库连接查询
$users = Db::connect('oracle')->name('user')->select();
```
需要注意的是,在使用多库连接时,如果需要使用事务操作,则需要在使用 `Db::startTrans()` 开始事务前,手动切换到对应的连接。例如:
```php
// 开始 mysql 数据库连接的事务
Db::connect('mysql')->startTrans();
// 执行 mysql 数据库连接的操作
Db::connect('mysql')->name('user')->where('id', 1)->update(['name' => 'new name']);
// 切换到 oracle 数据库连接
Db::connect('oracle')->startTrans();
// 执行 oracle 数据库连接的操作
Db::connect('oracle')->name('user')->where('id', 1)->update(['name' => 'new name']);
// 提交事务
Db::commit();
```
阅读全文