relation BovineType + ajout des races manquantes.'; } public function up(Schema $schema): void { // 1. Insertion des BovineType manquants (idempotent via NOT EXISTS). $this->addSql("INSERT INTO bovine_type (label, code) SELECT 'Aubrac', '14' WHERE NOT EXISTS (SELECT 1 FROM bovine_type WHERE code = '14')"); $this->addSql("INSERT INTO bovine_type (label, code) SELECT 'Croisé', '39' WHERE NOT EXISTS (SELECT 1 FROM bovine_type WHERE code = '39')"); $this->addSql("INSERT INTO bovine_type (label, code) SELECT 'Blonde d''aquitaine', '79' WHERE NOT EXISTS (SELECT 1 FROM bovine_type WHERE code = '79')"); // 2. Ajout de la colonne FK + index. $this->addSql('ALTER TABLE bovine ADD bovine_type_id INT DEFAULT NULL'); $this->addSql('CREATE INDEX IDX_2068337F7899F32E ON bovine (bovine_type_id)'); // 3. Backfill : associe chaque bovin à son BovineType via le code. $this->addSql('UPDATE bovine SET bovine_type_id = (SELECT id FROM bovine_type WHERE bovine_type.code = bovine.breed_code) WHERE breed_code IS NOT NULL'); // 4. Contrainte de clé étrangère (après backfill pour éviter une violation transitoire). $this->addSql('ALTER TABLE bovine ADD CONSTRAINT FK_2068337F7899F32E FOREIGN KEY (bovine_type_id) REFERENCES bovine_type (id)'); // 5. Drop de l'ancienne colonne string. $this->addSql('ALTER TABLE bovine DROP breed_code'); } public function down(Schema $schema): void { $this->addSql('ALTER TABLE bovine ADD breed_code VARCHAR(20) DEFAULT NULL'); $this->addSql('UPDATE bovine SET breed_code = (SELECT code FROM bovine_type WHERE bovine_type.id = bovine.bovine_type_id) WHERE bovine_type_id IS NOT NULL'); $this->addSql('ALTER TABLE bovine DROP CONSTRAINT FK_2068337F7899F32E'); $this->addSql('DROP INDEX IDX_2068337F7899F32E'); $this->addSql('ALTER TABLE bovine DROP bovine_type_id'); } }