Как вынести общие столбцы миграции в Yii2?

В Yii 2 вынести общие столбцы миграции можно, используя механизм наследования миграций.

При создании миграции в Yii 2, обычно используется консольная команда yii migrate/create, которая создает пустой класс миграции. В этом классе вы можете определить все необходимые столбцы и индексы. Однако, если у вас есть несколько миграций, которые имеют одни и те же общие столбцы, то вы можете вынести эти столбцы в отдельный класс и унаследовать другие миграции от этого базового класса.

Вот пример, как это можно сделать:

1. Создайте базовый класс миграции, например BaseMigration, в котором определите общие столбцы:

use yiidbMigration;

class BaseMigration extends Migration
{
    public function up()
    {
        $this->addColumn('table_name', 'common_column1', $this->string());
        $this->addColumn('table_name', 'common_column2', $this->integer());
        // и другие столбцы
    }

    public function down()
    {
        $this->dropColumn('table_name', 'common_column1');
        $this->dropColumn('table_name', 'common_column2');
        // и другие столбцы
    }
}

2. Создайте конкретную миграцию, которая будет наследовать от базового класса:

class MyMigration extends BaseMigration
{
    public function up()
    {
        parent::up();

        // Дополнительные действия для текущей миграции
        $this->createTable('my_table', [
            'id' => $this->primaryKey(),
            // остальные столбцы
        ]);
    }

    public function down()
    {
        // Дополнительные действия для текущей миграции
        $this->dropTable('my_table');

        parent::down();
    }
}

Теперь при выполнении миграции MyMigration, вначале будут созданы общие столбцы из базового класса BaseMigration, а затем созданы и удалены дополнительные столбцы из текущей миграции.

Таким образом, путем наследования от базового класса, вы можете избежать дублирования кода и упростить процесс создания миграций с общими столбцами.