在 Yii 2.0 中,迁移 MySQL 数据库中的 A 表中的一列数据至 B 表中的一列数据,基于一条 SQL 的实现

1、参考网址:http://www.shuijingwanwq.com/2019/08/15/3427/

UPDATE `cpa_channel_app_source`, `cpa_weibo_weibo_connect_web_app_user` SET `cpa_channel_app_source`.`permission` = `cpa_weibo_weibo_connect_web_app_user`.`permission` WHERE `cpa_channel_app_source`.`id` = `cpa_weibo_weibo_connect_web_app_user`.`channel_app_source_id`;

2、更新表:channel_app_source 中的字段:permission 的值为:3,如图1

更新表:channel_app_source 中的字段:permission 的值为:3

图1

3、基于数据库迁移命令,生成如上所示的一条 SQL 的实现,编辑 /console/migrations/m190815_020034_permission.php

<?php

use yii/db/Expression;
use yii/db/Migration;

/**
 * Class m190815_020034_permission
 */
class m190815_020034_permission extends Migration
{
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        $this->update('{{%channel_app_source}}, {{%weibo_weibo_connect_web_app_user}}', ['{{%channel_app_source}}.permission' => new Expression('{{%weibo_weibo_connect_web_app_user}}.permission')], ['{{%channel_app_source}}.id' => new Expression('{{%weibo_weibo_connect_web_app_user}}.channel_app_source_id')]);
    }

    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
        echo "m190815_020034_permission cannot be reverted./n";

        return false;
    }

    /*
    // Use up()/down() to run migration code without a transaction.
    public function up()
    {

    }

    public function down()
    {
        echo "m190815_020034_permission cannot be reverted./n";

        return false;
    }
    */
}

4、执行数据库迁移命令,如图2

执行数据库迁移命令

图2

PS E:/wwwroot/channel-pub-api> ./yii migrate
Yii Migration Tool (based on Yii v2.0.15.1)

Total 1 new migration to be applied:
        m190815_020034_permission

Apply the above migration? (yes|no) [no]:yes
*** applying m190815_020034_permission
    > update {{%channel_app_source}}, {{%weibo_weibo_connect_web_app_user}} ... done (time: 0.092s)
*** applied m190815_020034_permission (time: 0.190s)


1 migration was applied.

Migrated up successfully.

5、查看表:channel_app_source 中的字段:permission 的值为:2,符合预期,如图3

查看表:channel_app_source 中的字段:permission 的值为:2,符合预期

图3

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/webdev/181373.html

(0)
上一篇 2021年10月31日 21:58
下一篇 2021年10月31日 21:58

相关推荐

发表回复

登录后才能评论