migrations/Version20220609081457.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 Version20220609081457 extends AbstractMigration
  10. {
  11.     public function getDescription(): string
  12.     {
  13.         return 'Suppression/modification en cascade quand on supprime une entreprise.';
  14.     }
  15.     public function up(Schema $schema): void
  16.     {
  17.         // Si on supprime une entreprise, supprime toutes les entrées soumissionnaires de cette entreprise
  18.         // Cette contrainte n'est utilisée que pour une suppression directe via sql.
  19.         // Dans doctrine, on a un attribut cascade=remove sur company.tenderers qui est prioritaire et qui permet
  20.         // de supprimer également les uploads de chaque tenderer supprimé (via sql ils ne sont aps supprimés)
  21.         $this->addSql('ALTER TABLE tenderer DROP FOREIGN KEY FK_37F6A81B979B1AD6');
  22.         $this->addSql('ALTER TABLE tenderer ADD CONSTRAINT FK_37F6A81B979B1AD6 FOREIGN KEY (company_id) REFERENCES company (id) ON DELETE CASCADE');
  23.         // Si on supprime un DDO, on conserve ses projets mais on initialise le champ ddo_id de ses projets à null
  24.         $this->addSql('ALTER TABLE tender DROP FOREIGN KEY FK_42057A77B450C615');
  25.         $this->addSql('ALTER TABLE tender ADD CONSTRAINT FK_42057A77B450C615 FOREIGN KEY (ddo_id) REFERENCES company (id) ON DELETE SET NULL');
  26.         // Si on supprime le soumissionnaire pressenti d'un lot, réinitialise le champ soumissionnaire pressenti
  27.         $this->addSql('ALTER TABLE lot DROP FOREIGN KEY FK_B81291B64D7A2F');
  28.         $this->addSql('ALTER TABLE lot ADD CONSTRAINT FK_B81291B64D7A2F FOREIGN KEY (preferred_tenderer_id) REFERENCES tenderer (id) ON DELETE SET NULL');
  29.         // SI on supprime une entreprise qui avait un annuaire "mes entreprises" (ddo ou groupe), supprime tout l'annuaire
  30.         $this->addSql('ALTER TABLE company_review DROP FOREIGN KEY FK_44DCE5B3A76ED395');
  31.         $this->addSql('ALTER TABLE company_review ADD CONSTRAINT FK_44DCE5B3A76ED395 FOREIGN KEY (user_id) REFERENCES company (id) ON DELETE CASCADE');
  32.         // Si on supprime une entreprise, supprime tous les avis sur cette entreprise dans tous les annuaires
  33.         $this->addSql('ALTER TABLE company_review DROP FOREIGN KEY FK_44DCE5B3979B1AD6');
  34.         $this->addSql('ALTER TABLE company_review ADD CONSTRAINT FK_44DCE5B3979B1AD6 FOREIGN KEY (company_id) REFERENCES company (id) ON DELETE CASCADE');
  35.     }
  36.     public function down(Schema $schema): void
  37.     {
  38.         $this->addSql('ALTER TABLE tenderer DROP FOREIGN KEY FK_37F6A81B979B1AD6');
  39.         $this->addSql('ALTER TABLE tenderer ADD CONSTRAINT FK_37F6A81B979B1AD6 FOREIGN KEY (company_id) REFERENCES company (id)');
  40.         $this->addSql('ALTER TABLE tender DROP FOREIGN KEY FK_42057A77B450C615');
  41.         $this->addSql('ALTER TABLE tender ADD CONSTRAINT FK_42057A77B450C615 FOREIGN KEY (ddo_id) REFERENCES company (id)');
  42.         $this->addSql('ALTER TABLE lot DROP FOREIGN KEY FK_B81291B64D7A2F');
  43.         $this->addSql('ALTER TABLE lot ADD CONSTRAINT FK_B81291B64D7A2F FOREIGN KEY (preferred_tenderer_id) REFERENCES tenderer (id)');
  44.         $this->addSql('ALTER TABLE company_review DROP FOREIGN KEY FK_44DCE5B3A76ED395');
  45.         $this->addSql('ALTER TABLE company_review ADD CONSTRAINT FK_44DCE5B3A76ED395 FOREIGN KEY (user_id) REFERENCES company (id)');
  46.         $this->addSql('ALTER TABLE company_review DROP FOREIGN KEY FK_44DCE5B3979B1AD6');
  47.         $this->addSql('ALTER TABLE company_review ADD CONSTRAINT FK_44DCE5B3979B1AD6 FOREIGN KEY (company_id) REFERENCES company (id)');
  48.     }
  49. }