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
相关产品推荐
相关产品推荐

