我们有一个基于 Yii 构建的大型应用程序。
到目前为止,迁移是通过在 phpliteadmin/phpmyadmin 中复制粘贴 SQL 转储来完成的,但这不是很方便。
我想使用 CDbMigration
和 yiic migrate
。
问题是我们有两个数据库 - 一个用于配置和设置的小型 SQLite,以及用于存储一些历史记录的大型 mysql。
如何指定迁移属于哪个数据库?
这是基本的迁移结构,用于说明。
class do_stuff extends CDbMigration
{
public function up()
{
// create table
}
public function down()
{
// drop table
}
}
最佳答案
在 config.php
文件中,在 components
数组中指定数据库连接。
'db1'=>array(
'class'=>'CDbConnection',
'connectionString' => 'mysql:charset=utf8mb4;host=localhost;dbname=dbname1',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
),
'db2'=>array(
'class'=>'CDbConnection',
'connectionString' => 'mysql:charset=utf8mb4;host=localhost;dbname=dbname2',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
),
然后在迁移中,您可以执行以下操作:
protected $dbConnection1;
protected function getDbConnection1()
{
if (null !== $this->dbConnection1) {
return $this->dbConnection1;
}
return $this->dbConnection1 = Yii::app()->getComponent('db1');
}
重复第二次连接。
然后使用这些方法获取每个数据库的 CDbConnection,您可以从中创建要执行的命令。
关于php - 具有多个数据库的 Yii 迁移 - 指定 DB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490193/