addSql('ALTER TABLE clinic_resources ADD supervisor_id INT DEFAULT NULL'); $this->addSql( 'ALTER TABLE clinic_resources ' . 'ADD CONSTRAINT FK_resource_supervisor FOREIGN KEY (supervisor_id) ' . 'REFERENCES doctors (id) ON DELETE SET NULL' ); $this->addSql('CREATE INDEX idx_resource_supervisor ON clinic_resources (supervisor_id)'); // منبعِ یک مطب شخصی: ناظرش خودِ همان پزشک است. $this->addSql( 'UPDATE clinic_resources SET supervisor_id = entity_id ' . "WHERE supervisor_id IS NULL AND entity_type = 'doctor'" ); // منبعِ کلینیک: پزشکِ اولِ همان کلینیک. اپراتور می‌تواند بعداً عوضش کند. $this->addSql( 'UPDATE clinic_resources r SET r.supervisor_id = (' . ' SELECT MIN(cd.doctor_id) FROM clinic_doctors cd WHERE cd.clinic_id = r.entity_id' . ") WHERE r.supervisor_id IS NULL AND r.entity_type = 'clinic'" ); } public function down(Schema $schema): void { $this->addSql('DROP INDEX idx_resource_supervisor ON clinic_resources'); $this->addSql('ALTER TABLE clinic_resources DROP FOREIGN KEY FK_resource_supervisor'); $this->addSql('ALTER TABLE clinic_resources DROP supervisor_id'); } }