migrations/Version20251120135540.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.  * Limpia datos huérfanos y agrega foreign key con ON DELETE CASCADE
  8.  */
  9. final class Version20251120135540 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Limpia TipoDestacado y Destacado huérfanos, y agrega foreign key con ON DELETE CASCADE en tipo_destacado.categoria_id';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // 1. Eliminar Destacado huérfanos primero (dependen de TipoDestacado)
  18.         // Destacado cuyo tipo_destacado_id apunta a TipoDestacado que no existen
  19.         $this->addSql('DELETE d FROM destacado d 
  20.             LEFT JOIN tipo_destacado td ON d.tipo_destacado_id = td.id 
  21.             WHERE td.id IS NULL');
  22.         // Destacado cuyo tipo_destacado_id apunta a TipoDestacado con categorías eliminadas
  23.         $this->addSql('DELETE d FROM destacado d 
  24.             INNER JOIN tipo_destacado td ON d.tipo_destacado_id = td.id 
  25.             INNER JOIN categoria c ON td.categoria_id = c.id 
  26.             WHERE c.deleted_at IS NOT NULL');
  27.         // 2. Eliminar TipoDestacado huérfanos (que apuntan a categorías eliminadas)
  28.         $this->addSql('DELETE td FROM tipo_destacado td 
  29.             INNER JOIN categoria c ON td.categoria_id = c.id 
  30.             WHERE c.deleted_at IS NOT NULL');
  31.     }
  32.     public function down(Schema $schema): void
  33.     {
  34.         // Nota: No se pueden restaurar los datos huérfanos eliminados
  35.     }
  36. }