如何在yii2中与来自不同数据库oracle和mysql的数据库建立连接

时间:2017-12-04 07:16:05

标签: yii yii2 yii2-advanced-app yii-components

实际上我创建了一个应用程序 请有人说我。如何与mysql和不同的oracle服务器建立连接。 以及如何更新我的mysql字段,以便自动更新我的oracle erp系统。

2 个答案:

答案 0 :(得分:1)

按照@Paritosh Mahale评论过的链接:

Multiple database connections and Yii 2.0

关于更新数据库中字段的部分,您可以通过以下方式使用迁移:

/yiic migrate                 # The default component db
/yiic migrate --db=db1        # Connection db component mysql
/yiic migrate --db=db2        # Connection oracle component db 

并且您需要在具有不同选项--db的两个数据库上运行相同的迁移命令。

或者您可以覆盖init()的{​​{1}}方法:

yii\db\Migration

并使用如下:<?php use yii\db\Migration; class m150101_185401_create_news_table extends Migration { public function init() { $this->db = 'db2'; parent::init(); } } 此迁移将应用于db2。 如果您有多个使用相同数据库的迁移,建议您使用上述/yiic migrate代码创建基本迁移类。然后,每个迁移类都可以从此基类扩展。

如果要为每个数据库连接分别建立迁移路径,可以这样做:

init()

对于应用迁移&#34;自动&#34;在一个命令中的每个数据库中,您可以(只是一个想法)扩展yii\console\controllers\MigrateController类并添加属性yii migrate --migrationPath=@app/migrations/db1 --db=db1 yii migrate --migrationPath=@app/migrations/db2 --db=db2 ... 。在将此属性添加到public $dbs后,当您调用migrate命令时,您可以传递这样的参数:

options()

因此您可以管理该参数以执行/yiic migrate --dbs=db1,db2 $ dbs;

的迁移

<强> [编辑]

答案的某些部分来自这里:Migrating Multiple Databases

答案 1 :(得分:0)

使用Paritosh Mahale链接。假设您使用带有getDb()的OracleModel返回oracle连接,并使用getDb()返回mysql连接的MySql模型。然后在MySql模型中定义afterSave事件hendler:

public function afterSave()
{
    $oracleModel = OracleModel::findOne(/* condition */);
    $oracleModel->someField = 123;
    $oracleModel->save();
}