В 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
, а затем созданы и удалены дополнительные столбцы из текущей миграции.
Таким образом, путем наследования от базового класса, вы можете избежать дублирования кода и упростить процесс создания миграций с общими столбцами.