You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YII2框架中如何配置并使用多数据库连接?

YII2 配置多数据库连接方法

1. 修改配置文件

你可以直接在项目的Web/控制台配置文件(如/config/web.php或/config/console.php)的components节点下,添加第二个数据库的连接配置:

// /config/web.php
return [
    // 其他原有配置
    'components' => [
        'db' => require __DIR__ . '/db.php', // 保留原有主数据库配置
        'db2' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'pgsql:host=myhost2;port=5432;dbname=mydbname2', // 第二个数据库的DSN
            'username' => 'user2', // 第二个数据库账号
            'password' => 'password2', // 第二个数据库密码
            'charset' => 'utf8',
        ],
        // 其他组件配置
    ],
];

如果想保持配置文件整洁,也可以新建一个/config/db2.php文件存放第二个数据库配置:

// /config/db2.php
<?php
return [
    'class' => 'yii\db\Connection',
    'dsn' => 'pgsql:host=myhost2;port=5432;dbname=mydbname2',
    'username' => 'user2',
    'password' => 'password2',
    'charset' => 'utf8',   
];

然后在web.php中引入:

'db2' => require __DIR__ . '/db2.php',

2. 使用多数据库连接

  • 调用主数据库:保持原有方式即可
// 执行主数据库查询
$mainData = Yii::$app->db->createCommand('SELECT * FROM main_table')->queryAll();
  • 调用第二个数据库:直接通过Yii::$app->db2访问
// 执行第二个数据库查询
$secondData = Yii::$app->db2->createCommand('SELECT * FROM second_table')->queryAll();
  • ActiveRecord模型指定数据库:如果模型需要操作第二个数据库,在模型类中重写getDb()方法:
namespace app\models;

use yii\db\ActiveRecord;

class SecondDbModel extends ActiveRecord
{
    public static function getDb()
    {
        return Yii::$app->db2; // 绑定到第二个数据库连接
    }

    // 模型其他逻辑
}

内容的提问来源于stack exchange,提问作者Yarr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:27:10