thinkphp 多个数据库 联合查询
时间: 2024-02-06 21:15:17 浏览: 145
ThinkPHP多表联合查询的常用方法
在 ThinkPHP 中进行多个数据库的联合查询可以使用以下步骤:
1. 在数据库配置文件中添加数据库配置信息
在 `database.php` 文件中添加需要联合查询的多个数据库的配置信息,例如:
```php
return [
// 默认数据库连接配置
'default' => [
// ...
],
// 数据库连接配置 1
'db1' => [
'type' => 'mysql',
'hostname' => 'localhost',
'database' => 'database1',
'username' => 'root',
'password' => 'root',
'hostport' => '',
'charset' => 'utf8mb4',
'prefix' => '',
'debug' => true,
'deploy' => 0,
'rw_separate' => false,
'master_num' => 1,
'slave_no' => '',
'fields_strict' => true,
'resultset_type' => 'array',
'auto_timestamp' => false,
'sql_explain' => false,
],
// 数据库连接配置 2
'db2' => [
'type' => 'mysql',
'hostname' => 'localhost',
'database' => 'database2',
'username' => 'root',
'password' => 'root',
'hostport' => '',
'charset' => 'utf8mb4',
'prefix' => '',
'debug' => true,
'deploy' => 0,
'rw_separate' => false,
'master_num' => 1,
'slave_no' => '',
'fields_strict' => true,
'resultset_type' => 'array',
'auto_timestamp' => false,
'sql_explain' => false,
],
];
```
这里的 `db1` 和 `db2` 是需要联合查询的两个数据库配置名称,可以根据实际情况进行修改。
2. 使用 `Db::connect()` 方法连接目标数据库
在查询操作前使用 `Db::connect()` 方法连接需要查询的目标数据库,例如:
```php
$users = Db::connect('db1')->table('users')->select();
```
这里的 `db1` 是需要查询的目标数据库配置名称,`users` 则是需要查询的表名。
3. 使用 `union()` 方法进行联合查询
在连接目标数据库后,使用 `union()` 方法进行联合查询,例如:
```php
$users = Db::connect('db1')->table('users')
->field('id, name')
->union(Db::connect('db2')->table('users')->field('id, name'))
->select();
```
这里的 `db1` 和 `db2` 分别是需要联合查询的两个数据库配置名称,`users` 则是需要查询的表名,`field()` 方法用于指定需要查询的字段。
注意:在进行多个数据库的联合查询时,需要确保每个数据库中的表结构和字段名称一致,否则可能会出现查询错误或异常。
阅读全文