<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20250707075137 extends AbstractMigration
{
public function getDescription(): string
{
return 'Fusionne le niveau de confidentialité ID 2 vers ID 1.';
}
public function up(Schema $schema): void
{
// Cette opération est spécifique à MySQL, adaptez si vous utilisez une autre base de données
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'mysql', 'Migration can only be executed safely on \'mysql\'.');
// Mettre à jour les entités liées de l'ID 2 vers l'ID 1
// Mettre à jour CommunityRelationship
$this->addSql("UPDATE community_relationship SET confidentiality_id = 1 WHERE confidentiality_id = 2");
// Mettre à jour Invitefriend
$this->addSql("UPDATE invitefriend SET confidentiality_id = 1 WHERE confidentiality_id = 2");
// Mettre à jour Gift (attention, votre entité a 'confidentality', pas 'confidentiality')
$this->addSql("UPDATE gift SET confidentality_id = 1 WHERE confidentality_id = 2");
// Mettre à jour UserInformations
$this->addSql("UPDATE user_informations SET confidentialite_id = 1 WHERE confidentialite_id = 2");
// Renommer le niveau de confidentialité ID 1 en "Cercle proche"
$this->addSql("UPDATE confidentialite SET label = 'Cercle proche' WHERE id = 1");
// Supprimer l'ancien niveau de confidentialité (ID 2)
$this->addSql("DELETE FROM confidentialite WHERE id = 2");
}
public function down(Schema $schema): void
{
// ATTENTION : Le "down" d'une opération de fusion est extrêmement complexe et souvent impossible
// de manière générique sans perdre des données ou sans une logique métier très spécifique
// pour redéterminer quel ancien niveau (1 ou 2) s'appliquait à chaque enregistrement.
// Il est FORTEMENT recommandé de faire une sauvegarde de votre base de données avant d'exécuter cette migration.
$this->write('ATTENTION : Un rollback de cette fusion est complexe et non implémenté automatiquement.');
$this->write('Si un rollback est nécessaire, il est fortement recommandé de restaurer une sauvegarde de la base de données.');
}
}