thinkphp5配置链接多数据库, 并且进行增删改查,在model中使用不同的数据库连接呢
时间: 2024-05-05 16:18:59 浏览: 96
可以通过在配置文件中定义多个数据库连接,然后在使用不同的数据表时,指定对应的连接名。具体步骤如下:
1. 在 `config/database.php` 配置文件中定义多个数据库连接,例如:
```
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'database'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'mssql' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST2', 'localhost'),
'database' => env('DB_DATABASE2', 'database2'),
'username' => env('DB_USERNAME2', 'root'),
'password' => env('DB_PASSWORD2', ''),
'charset' => 'utf8',
'prefix' => '',
'pooling' => false,
'options' => [
PDO::ATTR_EMULATE_PREPARES => true,
PDO::ATTR_STRINGIFY_FETCHES => false,
],
],
],
```
2. 在 `model` 中使用不同的数据库连接,例如:
```
class UserModel extends Model
{
protected $connection = 'mysql';
protected $table = 'users';
protected $guarded = [];
public function orders()
{
return $this->hasMany(OrderModel::class, 'user_id')->onConnection('mssql');
}
}
class OrderModel extends Model
{
protected $connection = 'mssql';
protected $table = 'orders';
protected $guarded = [];
public function user()
{
return $this->belongsTo(UserModel::class, 'user_id')->onConnection('mysql');
}
}
```
在上面的例子中,`UserModel` 使用 `mysql` 连接,`OrderModel` 使用 `mssql` 连接。在定义关联关系时,可以使用 `onConnection` 方法指定使用哪个连接。例如,`UserModel` 的 `orders` 方法返回一个 `hasMany` 关联实例,该实例使用 `mssql` 连接。而 `OrderModel` 的 `user` 方法返回一个 `belongsTo` 关联实例,该实例使用 `mysql` 连接。
这样,即可实现使用不同的数据库连接进行增删改查。
阅读全文