<?php
/**
* This view is used by console/controllers/MigrateController.php
* The following variables are available in this view:
*/
/** @var $migrationName string the new migration class name
* @var array $tableList
* @var array $tableRelations
* @var insolita\migrik\gii\StructureGenerator $generator
* @var array $fkProps
*
*/
echo "<?php\n";
?>
use yii\db\Schema;
use yii\db\Migration;
class <?= $migrationName ?> extends Migration
{
public function init()
{
$this->db = '<?=$generator->db?>';
parent::init();
}
public function safeUp()
{
$tableOptions = '<?=$generator->tableOptions?>';
<?php foreach ($tableList as $tableData) :?>
$this->createTable('<?= ($generator->usePrefix)?$tableData['alias']:$tableData['name'] ?>',[
<?php foreach ($tableData['columns'] as $name => $data) :?>
'<?=$name?>'=> <?=$data;?>,
<?php endforeach;?>
], $tableOptions);
<?php if (!empty($tableData['indexes']) && is_array($tableData['indexes'])) :?>
<?php foreach ($tableData['indexes'] as $name => $data) :?>
<?php if ($name!='PRIMARY') :?>
$this->createIndex('<?=$name?>','<?=$tableData['alias']?>',['<?=implode("','", array_values($data['cols']))?>'],<?=$data['isuniq']?'true':'false'?>);
<?php endif;?>
<?php endforeach;?>
<?php endif?>
<?php if (!empty($tableData['tablePk'])) : ?>
$this->addPrimaryKey('pk_on_<?=$tableData['name']?>','<?=$tableData['alias']?>',['<?=implode("','",$tableData['tablePk'])?>']);
<?php endif?>
<?php endforeach;?>
<?php if (!empty($tableRelations) && is_array($tableRelations)) :?>
<?php foreach ($tableRelations as $table) :?>
<?php foreach ($table['fKeys'] as $i => $rel) :?>
$this->addForeignKey(
'fk_<?=$table['tableName']?>_<?=$rel['pk']?>',
'<?=$table['tableAlias']?>', '<?=$rel['pk']?>',
'<?=$rel['ftable']?>', '<?=$rel['fk']?>',
'<?=$fkProps['onDelete']?>', '<?=$fkProps['onUpdate']?>'
);
<?php endforeach;?>
<?php endforeach;?>
<?php endif?>
}
public function safeDown()
{
<?php if (!empty($tableRelations) && is_array($tableRelations)) :?>
<?php foreach ($tableRelations as $table) :?>
<?php foreach ($table['fKeys'] as $i => $rel) :?>
$this->dropForeignKey('fk_<?=$table['tableName']?>_<?=$rel['pk']?>', '<?=$table['tableAlias']?>');
<?php endforeach;?>
<?php endforeach;?>
<?php endif?>
<?php foreach ($tableList as $tableData) :?>
<?php if (!empty($tableData['tablePk'])) : ?>
$this->dropPrimaryKey('pk_on_<?=$tableData['name']?>','<?=$tableData['alias']?>');
<?php endif?>
$this->dropTable('<?= ($generator->usePrefix)?$tableData['alias']:$tableData['name']?>');
<?php endforeach;?>
}
}
|