Files
yii2/framework/views/createJunctionMigration.php
2025-06-03 19:57:08 +03:00

81 lines
2.0 KiB
PHP

<?php
/**
* This view is used by console/controllers/MigrateController.php.
*
* The following variables are available in this view:
* @since 2.0.7
* @deprecated since 2.0.8
*
* @var string $className the new migration class name without namespace
* @var string $namespace the new migration class namespace
* @var string $table the name table
* @var string $field_first the name field first
* @var string $field_second the name field second
*/
echo "<?php\n";
if (!empty($namespace)) {
echo "\nnamespace {$namespace};\n";
}
?>
use yii\db\Migration;
/**
* Handles the creation of table `<?= $table ?>` which is a junction between
* table `<?= $field_first ?>` and table `<?= $field_second ?>`.
*/
class <?= $className ?> extends Migration
{
/**
* {@inheritdoc}
*/
public function safeUp()
{
$this->createTable('<?= $table ?>', [
'<?= $field_first ?>_id' => $this->integer(),
'<?= $field_second ?>_id' => $this->integer(),
'PRIMARY KEY(<?= $field_first ?>_id, <?= $field_second ?>_id)',
]);
$this->createIndex(
'idx-<?= $table . '-' . $field_first ?>_id',
'<?= $table ?>',
'<?= $field_first ?>_id'
);
$this->createIndex(
'idx-<?= $table . '-' . $field_second ?>_id',
'<?= $table ?>',
'<?= $field_second ?>_id'
);
$this->addForeignKey(
'fk-<?= $table . '-' . $field_first ?>_id',
'<?= $table ?>',
'<?= $field_first ?>_id',
'<?= $field_first ?>',
'id',
'CASCADE'
);
$this->addForeignKey(
'fk-<?= $table . '-' . $field_second ?>_id',
'<?= $table ?>',
'<?= $field_second ?>_id',
'<?= $field_second ?>',
'id',
'CASCADE'
);
}
/**
* {@inheritdoc}
*/
public function safeDown()
{
$this->dropTable('<?= $table ?>');
}
}