entityManager = $entityManager; $this->availableLanguages = $availableLanguages; parent::__construct(); } public static function prepareCountryList($languages) { $regionBundle = Intl::getRegionBundle(); $countries = []; foreach ($languages as $language) { $countries[$language] = $regionBundle->getCountryNames($language); } $countryEntities = []; foreach ($countries[$languages[0]] as $countryCode => $name) { $names = []; foreach ($languages as $language) { $names[$language] = $countries[$language][$countryCode]; } $country = new \Chill\MainBundle\Entity\Country(); $country->setName($names)->setCountryCode($countryCode); $countryEntities[] = $country; } return $countryEntities; } /** * (non-PHPdoc). * * @see \Symfony\Component\Console\Command\Command::configure() */ protected function configure() { $this->setName('chill:main:countries:populate') ->setDescription('Load or update countries in db. This command does not delete existing countries, ' . 'but will update names according to available languages'); } /** * (non-PHPdoc). * * @see \Symfony\Component\Console\Command\Command::execute() */ protected function execute(InputInterface $input, OutputInterface $output) { $countries = static::prepareCountryList($this->availableLanguages); $em = $this->entityManager; foreach ($countries as $country) { $countryStored = $em->getRepository('ChillMainBundle:Country') ->findOneBy(['countryCode' => $country->getCountryCode()]); if (null === $countryStored) { $em->persist($country); } else { $countryStored->setName($country->getName()); } } $em->flush(); } }