addSql('ALTER TABLE chill_person_person ALTER phonenumber TYPE TEXT'); $this->addSql('ALTER TABLE chill_person_person ALTER phonenumber DROP DEFAULT'); $this->addSql('ALTER TABLE chill_person_person ALTER phonenumber DROP NOT NULL'); $this->addSql('COMMENT ON COLUMN chill_person_person.phonenumber IS NULL'); $this->addSql('ALTER TABLE chill_person_person ALTER mobilenumber TYPE TEXT'); $this->addSql('ALTER TABLE chill_person_person ALTER mobilenumber DROP DEFAULT'); $this->addSql('ALTER TABLE chill_person_person ALTER mobilenumber DROP NOT NULL'); $this->addSql('COMMENT ON COLUMN chill_person_person.mobilenumber IS NULL'); $this->addSql( 'UPDATE chill_person_person SET '. $this->buildMigrationPhonenumberClause($carrierCode, 'phonenumber'). ', '. $this->buildMigrationPhoneNumberClause($carrierCode, 'mobilenumber') ); $this->addSql('ALTER TABLE chill_person_phone ALTER phonenumber TYPE TEXT'); $this->addSql('ALTER TABLE chill_person_phone ALTER phonenumber DROP DEFAULT'); $this->addSql('ALTER TABLE chill_person_phone ALTER phonenumber DROP NOT NULL'); $this->addSql('COMMENT ON COLUMN chill_person_phone.phonenumber IS NULL'); $this->addSql( 'UPDATE chill_person_phone SET '. $this->buildMigrationPhoneNumberClause($carrierCode, 'phonenumber') ); } private function buildMigrationPhoneNumberClause(string $defaultCarriercode, string $field): string { $util = PhoneNumberUtil::getInstance(); $countryCode = $util->getCountryCodeForRegion($defaultCarriercode); return sprintf('%s=CASE WHEN %s = \'\' THEN NULL WHEN LEFT(%s, 1) = \'0\' THEN \'+%s\' || replace(replace(substr(%s, 2), \'(0)\', \'\'), \' \', \'\') ELSE replace(replace(%s, \'(0)\', \'\'),\' \', \'\') END', $field, $field, $field, $countryCode, $field, $field); } }