Трейт для помощи создания миграций
Добавлено: 2018.08.28, 12:27
Всем привет, хочу поделиться своей работой. Я написал трейт для помощи в написании миграций (https://packagist.org/packages/carono/yii2-migrate), всю readme копировать сюда не буду, кому интересно, можно почитать здесь https://github.com/carono/yii2-migrate/ ... DME_RUS.md
Основные возможности:
Упрощено создание внешних ключей, имена ключей генерируются автоматически и можно создавать ключи через createTable и addColumn
Так же можно удалить внешний ключ, не указывая конкретное имя ключа, а только по названию колонки и таблицы
Можно делать более лаконичные миграции с самооткатываением, если описывать создание таблиц или добавление колонок в отдельных функциях.
Это не все возможности, больше описано в редми на гитхабе. Код протестирован на mysql и postgresql, и покрыт по большей части тестами.
Основные возможности:
Упрощено создание внешних ключей, имена ключей генерируются автоматически и можно создавать ключи через createTable и addColumn
Код: Выделить всё
$this->createTable('{{%user}}', [
'id' => $this->primaryKey(),
'company_id' => $this->foreignKey('{{%company}}')
]);
$this->addColumn('{{%user}}', 'company_id', $this->foreignKey('{{%company}}'));
$this->alterColumn('{{%user}}', 'company_id', $this->foreignKey('{{%company}}'));
Код: Выделить всё
$this->dropForeignKeyByColumn('{{%user}}', 'company_id');
Код: Выделить всё
public function newTables()
{
return [
'{{%logs}}' => [
'data' => $this->string(),
],
'{{%user}}' => [
'id' => $this->primaryKey(),
'login' => $this->string()
],
];
}
public function safeUp()
{
$this->upNewTables(); // созданим таблицы, которые указали в newTables
}
public function safeUp()
{
$this->downNewTables(); // удалим эти таблицы в обратном порядке
}