addSql('ALTER TABLE site ADD street VARCHAR(255) DEFAULT NULL'); $this->addSql('ALTER TABLE site ADD complement VARCHAR(255) DEFAULT NULL'); // 2) Backfill : recopier full_address dans street pour ne pas perdre // les donnees existantes. Les retours a la ligne sont preserves // (PostgreSQL VARCHAR accepte \n) ; un admin pourra reformater // apres coup si besoin. Cas d'adresse > 255 chars : la migration // echoue cleanly (pas de tronquage silencieux). $this->addSql('UPDATE site SET street = full_address'); // 3) Bascule street en NOT NULL une fois le backfill applique. $this->addSql('ALTER TABLE site ALTER COLUMN street SET NOT NULL'); // 4) Drop de l'ancienne colonne full_address. $this->addSql('ALTER TABLE site DROP full_address'); } public function down(Schema $schema): void { // Recreation de full_address (NOT NULL via DEFAULT '' pour eviter // un crash si la table a deja des lignes), puis backfill inverse, // puis drop des nouvelles colonnes. $this->addSql("ALTER TABLE site ADD full_address TEXT NOT NULL DEFAULT ''"); $this->addSql("UPDATE site SET full_address = street || COALESCE(E'\\n' || complement, '')"); $this->addSql('ALTER TABLE site ALTER COLUMN full_address DROP DEFAULT'); $this->addSql('ALTER TABLE site DROP street'); $this->addSql('ALTER TABLE site DROP complement'); } }