Не только.. Ещё избавляет от 2\3 лишнего кода в миграциях, поскольку избавляет от написания всех обратных операций. Например, добавляем колонку, её нужно дропнуть в safeDown, а расширение это само делает, поскольку умеет инвертировать все операции с БД автоматом. Конкретно в этом примере мы с помощью этого расширения, заменяем кусок кода миграции на более компактный. Она создаёт 2 таблицы со стандартными колонками и ссылкой с одну на другую:
Код: Выделить всё
public function safeUp()
{
$this->createTable('characteristics_units', [
'id' => $this->primaryKey(),
'name' => $this->string()->notNull(),
'short_name' => $this->string()->notNull(),
'created' => $this->dateTime()->notNull()->defaultExpression('now()'),
'updated' => $this->dateTime(),
]);
$this->createTable('characteristics', [
'id' => $this->primaryKey(),
'characteristics_unit_id' => $this->integer()->notNull(),
'name' => $this->string()->notNull(),
'created' => $this->dateTime()->notNull()->defaultExpression('now()'),
'updated' => $this->dateTime(),
]);
$this->addForeignKey('characteristics_unit_id_characteristics_fk', 'characteristics', 'characteristics_unit_id', 'characteristics_units', 'id');
}
public function safeDown()
{
$this->dropTable('characteristics');
$this->dropTable('characteristics_units');
}
а расширение позволяет писать такой код следующим образом:
Код: Выделить всё
public function initInverter(\execut\yii\migration\Inverter $i)
{
$i->table('characteristics')->create(array_merge($this->defaultColumns(), [
'name' => $this->string()->notNull(),
'short_name' => $this->string()->notNull(),
]));
$i->table('characteristics_units')->create(array_merge($this->defaultColumns(), [
'name' => $this->string()->notNull(),
]))->addForeignColumn('characteristics');
}
Экономия времени написания и объёма кода на лицо