function load(ObjectManager $manager) { $usedSymbols = array(); $repository = $manager->getRepository('WealthbotAdminBundle:Security'); $securities = $this->getCsvData('securities.csv'); foreach ($securities as $index => $item) { if ($index === 0) { continue; } $name = trim($item[0]); $symbol = trim($item[1]); $typeString = 'security-type-' . (trim($item[2]) === 'ETF' ? 'EQ' : 'MU'); $expenseRatio = round((double) str_replace(',', '.', trim($item[3])), 2); /** @var SecurityType $securityType */ $securityType = $this->getReference($typeString); $exist = $repository->findOneBySymbol($symbol); if (!$exist && !in_array($symbol, $usedSymbols)) { $usedSymbols[] = $symbol; $security = new Security(); $security->setName($name); $security->setSymbol($symbol); $security->setSecurityType($securityType); $security->setExpenseRatio($expenseRatio); $manager->persist($security); } } $manager->flush(); }
private function loadSecurities(ObjectManager $manager) { $repository = $manager->getRepository('WealthbotAdminBundle:Security'); foreach ($this->securities as $item) { $security = $repository->findOneBySymbol($item['symbol']); if (!$security) { /** @var SecurityType $securityType */ $securityType = $this->getReference('security-type-' . $item['security_type']); $security = new Security(); $security->setName($item['name']); $security->setSymbol($item['symbol']); $security->setSecurityType($securityType); $security->setExpenseRatio($item['exp_ratio']); $manager->persist($security); } $this->addReference('security-' . $item['symbol'], $security); } }
/** * @see Command */ protected function execute(InputInterface $input, OutputInterface $output) { $em = $this->getContainer()->get('doctrine')->getEntityManager(); $em->getConnection()->getConfiguration()->setSQLLogger(null); $securityRepo = $em->getRepository('WealthbotAdminBundle:Security'); $securityTypeRepo = $em->getRepository('WealthbotAdminBundle:SecurityType'); $i = 0; $typeHash = array(); $securities = $this->loadCsvData('security_full.csv', $maxLength = 10000, $delimiter = ','); foreach ($securities as $index => $item) { if ($index === 0) { continue; } $type = trim($item[0]); $type = $type === 'ETF' ? 'EQ' : 'MU'; $symbol = trim($item[1]); $name = trim($item[2]); $ratio = round((double) str_replace(',', '.', trim($item[3])), 2); if (isset($typeHash[$type])) { $securityType = $typeHash[$type]; } else { $securityType = $securityTypeRepo->findOneByName($type); if ($securityType) { $typeHash[$type] = $securityType; } } $security = $securityRepo->findOneBySymbol($symbol); if (!$security && $securityType) { if (++$i % 100 == 0) { $security = new Security(); $security->setName($name); $security->setSymbol($symbol); $security->setSecurityType($securityType); $security->setExpenseRatio($ratio); $em->persist($security); $output->writeln("Security items [{$i}] has been loaded."); } } } $em->flush(); $em->clear(); $output->writeln("Security items [{$i}] has been loaded."); $output->writeln("Success!"); }