public function load(ObjectManager $manager) { foreach (range(0, 29) as $i) { $purchase = new Purchase(); $purchase->setGuid($this->generateGuid()); $purchase->setDeliveryDate(new \DateTime("+{$i} days")); $purchase->setCreatedAt(new \DateTime("now +{$i} seconds")); $purchase->setShipping(new \StdClass()); $purchase->setDeliveryHour($this->getRandomHour()); $purchase->setBillingAddress(json_encode(array('line1' => '1234 Main Street', 'line2' => 'Big City, XX 23456'))); $purchase->setBuyer($this->getReference('user-' . $i % 20)); $this->addReference('purchase-' . $i, $purchase); $manager->persist($purchase); $manager->flush(); $numItemsPurchased = rand(1, 5); foreach (range(1, $numItemsPurchased) as $j) { $item = new PurchaseItem(); $item->setQuantity(rand(1, 3)); $item->setProduct($this->getRandomProduct()); $item->setTaxRate(0.21); $item->setPurchase($this->getReference('purchase-' . $i)); $manager->persist($item); } } $manager->flush(); }
/** * @Route("/card/{cardId}/purchase/generate", name="generate_purchase") */ public function generatePurchaseAction($cardId) { $em = $this->getDoctrine()->getManager(); $card = $em->getRepository('AppBundle:Card')->find($cardId); if ($card->getStatus() == Card::getStatusList()[2]) { throw $this->createException('Карта просрочена!'); } for ($i = 0; $i < mt_rand(0, 8); $i++) { $purchase = new Purchase(); $purchase->setCard($card); $purchase->setAmount($this->generateAmount(500, 4000)); $purchase->setDate(new \DateTime()); $cardAmount = $card->getAmount(); $card->setAmount($cardAmount - $purchase->getAmount()); $em->persist($purchase); } $em->flush(); return $this->redirect($this->generateUrl('card_show', array('cardId' => $cardId))); }
/** * Creates a form to delete a Purchase entity. * * @param Purchase $purchase The Purchase entity * * @return \Symfony\Component\Form\Form The form */ private function createDeleteForm(Purchase $purchase) { return $this->createFormBuilder()->setAction($this->generateUrl('purchase_delete', array('id' => $purchase->getId())))->setMethod('DELETE')->getForm(); }
/** * @return RedirectResponse * @Route( * "/generator", * name="generator" * ) */ public function generatorAction() { set_time_limit(0); $em = $this->getDoctrine()->getManager(); $lastDate = $this->getDoctrine()->getManager()->getRepository('AppBundle:Purchase')->createQueryBuilder('p')->select('MAX(p.tsDayStart)')->getQuery()->getSingleScalarResult(); // выясняем точку отсчета if (!$lastDate) { $startDate = new \DateTime('0 January 2014'); } else { $startDate = new \DateTime(); $startDate->setTimestamp($lastDate); } // массив с 60 товарами $pmIds = array_fill(1, 60, ''); for ($dayCounter = 1; $dayCounter <= 100; $dayCounter++) { // добавляем один день $startDate->add(new \DateInterval('P1D')); // копируем массив с товарами для текущего дня $dayPmIds = $pmIds; // в день делаем 40 покупок for ($purchaseCount = 1; $purchaseCount <= 50; $purchaseCount++) { // извлекаем случайный товар $pmId = array_rand($dayPmIds); unset($dayPmIds[$pmId]); // генерируем покупку $purchase = new Purchase(); $purchase->setTsDayStart(clone $startDate)->setPmId($pmId)->setPrice(($pmId + mt_rand(1, 5)) * 1000)->setACount(mt_rand(20, 100)); $em->persist($purchase); } // пишем в бд, чтобы не вызвать переполнение $em->flush(); } $this->get('session')->getFlashBag()->add('success', 'База успешно обновлена, добавлено 5000 записей'); // возвращаемся на главную return $this->redirectToRoute('index'); }