migrations/Version20251027232410.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7.  * Auto-generated Migration: Please modify to your needs!
  8.  */
  9. final class Version20251027232410 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Crea la tabla landing_page y header con relación OneToOne';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // Crear tabla landing_page
  18.         $this->addSql('CREATE TABLE landing_page (
  19.             id INT AUTO_INCREMENT NOT NULL,
  20.             titulo VARCHAR(255) NOT NULL,
  21.             descripcion LONGTEXT DEFAULT NULL,
  22.             activo TINYINT(1) DEFAULT 1 NOT NULL,
  23.             created_at DATETIME NOT NULL,
  24.             updated_at DATETIME NOT NULL,
  25.             deleted_at DATETIME DEFAULT NULL,
  26.             INDEX IDX_TITULO (titulo),
  27.             PRIMARY KEY(id)
  28.         ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  29.         // Crear tabla header con relación a landing_page
  30.         $this->addSql('CREATE TABLE header (
  31.             id INT AUTO_INCREMENT NOT NULL,
  32.             landing_page_id INT DEFAULT NULL,
  33.             titulo VARCHAR(255) NOT NULL,
  34.             descripcion LONGTEXT DEFAULT NULL,
  35.             fondo VARCHAR(50) DEFAULT \'cyan\',
  36.             aside VARCHAR(50) DEFAULT \'bg-aside-hero-dark\',
  37.             multimedia VARCHAR(255) DEFAULT NULL,
  38.             url_gif VARCHAR(255) DEFAULT NULL,
  39.             url_video VARCHAR(255) DEFAULT NULL,
  40.             autoplay TINYINT(1) DEFAULT 0 NOT NULL,
  41.             video_loop TINYINT(1) DEFAULT 0 NOT NULL,
  42.             muted TINYINT(1) DEFAULT 0 NOT NULL,
  43.             video_controls TINYINT(1) DEFAULT 0 NOT NULL,
  44.             tipo_multimedia VARCHAR(50) DEFAULT \'imagen\',
  45.             tipo_diseno VARCHAR(50) DEFAULT \'corner\',
  46.             mostrar_multimedia TINYINT(1) DEFAULT 0 NOT NULL,
  47.             mostrar_botones TINYINT(1) DEFAULT 0 NOT NULL,
  48.             texto_boton_primario VARCHAR(100) DEFAULT NULL,
  49.             enlace_boton_primario VARCHAR(500) DEFAULT NULL,
  50.             texto_boton_secundario VARCHAR(100) DEFAULT NULL,
  51.             enlace_boton_secundario VARCHAR(500) DEFAULT NULL,
  52.             activo TINYINT(1) NOT NULL,
  53.             posicion INT DEFAULT NULL,
  54.             created_at DATETIME NOT NULL,
  55.             updated_at DATETIME NOT NULL,
  56.             deleted_at DATETIME DEFAULT NULL,
  57.             INDEX IDX_TITULO (titulo),
  58.             INDEX IDX_landing_page_id (landing_page_id),
  59.             PRIMARY KEY(id)
  60.         ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  61.         // Crear foreign key de header a landing_page
  62.         $this->addSql('ALTER TABLE header ADD CONSTRAINT FK_header_landing_page FOREIGN KEY (landing_page_id) REFERENCES landing_page (id) ON DELETE SET NULL');
  63.     }
  64.     public function down(Schema $schema): void
  65.     {
  66.         // Eliminar foreign key primero
  67.         $this->addSql('ALTER TABLE header DROP FOREIGN KEY FK_header_landing_page');
  68.         // Eliminar tablas
  69.         $this->addSql('DROP TABLE header');
  70.         $this->addSql('DROP TABLE landing_page');
  71.     }
  72. }