public function insertAction(Request $request) { //$movie = new Movie($request->get('title'), str_replace('.', '', $request->get('price')), $request->get('description')); $movie = new Movie(); if ($request->get('title') != null) { $movie->setTitle($request->get('title')); } if (str_replace('.', '', $request->get('price')) != null) { $movie->setPrice(str_replace('.', '', $request->get('price'))); } if ($request->get('description') != null) { $movie->setDescription($request->get('description')); } $validator = $this->get('validator'); $errors = $validator->validate($movie); if (count($errors) > 0) { $errorsString = (string) $errors; return $this->render('movies/customErrorPage.html.twig', array('errorsString' => $errorsString)); } /* em stands for entity manager */ $em = $this->getDoctrine()->getManager(); $em->persist($movie); $em->flush(); return $this->redirectToRoute('movies'); }
public function load(ObjectManager $manager) { $t1 = new Type(); $t1->setName('Feature Film'); $t2 = new Type(); $t2->setName('Documentary'); $g1 = new Genre(); $g1->setName('thriller'); $g2 = new Genre(); $g2->setName('fantasy'); $g3 = new Genre(); $g3->setName('drama'); $m1 = new Movie(); $m1->setTitle('Elephant man'); $m1->setType($t1); $m1->getGenres()->add($g2); $manager->persist($m1); $m2 = new Movie(); $m2->setTitle('Ice age'); $m2->setYear(2002); $m2->setReleaseDate(new \DateTime('2012-03-12')); $m2->setType($t2); $m2->getGenres()->add($g1); $m2->getGenres()->add($g3); $manager->persist($m2); $m3 = new Movie(); $m3->setTitle('Deadpool'); $m3->setType($t1); $m3->getGenres()->add($g1); $manager->persist($m3); $manager->flush(); }
public function importArray(array $data) { // Turning off doctrine default logs queries for saving memory $this->em->getConnection()->getConfiguration()->setSQLLogger(null); // Process items 20 by 20 $batchSize = 100; $i = 1; // Processing on each row of data foreach ($data as $row) { // $movieImporter->importCSVRow(); $movie = $this->em->getRepository('AppBundle:Movie')->findOneBy(array('title' => $row['Title'])); // If the movie does not exist we create one if (!is_object($movie)) { $movie = new Movie(); $movie->setTitle($row['Title']); } // Updating info $movie->setYear($row['Year']); $movie->setRating($row['IMDb Rating']); $type = $this->em->getRepository('AppBundle:Type')->findOneBy(array('name' => $row['Title type'])); if (!is_object($type)) { $type = new Type(); $type->setName($row['Title type']); $this->em->persist($type); $this->em->flush(); } $movie->setType($type); $genres = explode(', ', $row['Genres']); $movie->getGenres()->clear(); foreach ($genres as $genre) { $g = $this->em->getRepository('AppBundle:Genre')->findOneBy(array('name' => $genre)); if (!is_object($g)) { $g = new Genre(); $g->setName($genre); $this->em->persist($g); $this->em->flush(); // Important: without flush, object not written in DB, so not found with findOneBy, and we endup with duplicates } $movie->getGenres()->add($g); } // TODO handle other fields here // Persisting the current object $this->em->persist($movie); // Each 20 objects persisted we flush everything if ($i % $batchSize === 0) { $this->em->flush(); // Detaches all objects from Doctrine for memory save $this->em->clear(); // Notify progress $this->ed->dispatch('movie_importer.progress', new GenericEvent('progress', array('advance' => $batchSize))); } $i++; } // Flushing and clear data on queue $this->em->flush(); $this->em->clear(); }
/** * Adds a new movie to the database * @param Request $request */ protected function addMovie(Request $request) { try { // Create a new object holding the posted data $movie = new Movie(); $movie->setMovieName($request->request->get('movieName')); $movie->setReleaseYear($request->request->get('releaseYear')); $movie->setRating($request->request->get('rating')); // Auto generate next id and insert data $em = $this->getDoctrine()->getManager(); $this->changeTableName($em); $em->persist($movie); $metadata = $em->getClassMetaData(get_class($movie)); $metadata->setIdGenerator(new \Doctrine\ORM\Id\AssignedGenerator()); $em->flush(); $response['success'] = true; $response['cause'] = 'Movie ' . $request->request->get('movieName') . ' added successfully!'; // $response['movie_id'] = $movie_id; } catch (Exception $e) { $response['success'] = false; $response['cause'] = 'Invalid request'; } return $response; }
/** * {@inheritdoc} */ public function load(ObjectManager $manager) { $em = $this->container->get('doctrine')->getEntityManager('default'); $userManager = $this->container->get('fos_user.user_manager'); /** * Add users */ foreach ($this->users as $user) { $newUser = $userManager->createUser(); $newUser->setUsername($user['email']); $newUser->setEmail($user['email']); $newUser->setName($user['name']); $newUser->setPlainPassword($user['pass']); $newUser->setEnabled($user['active']); $newUser->setRoles(array($user['role'])); $userManager->updateUser($newUser, true); } /** *Add price categories into database */ foreach ($this->priceCategories as $category => $price) { $priceCategory = new priceCategory(); $priceCategory->setCategory($category); $priceCategory->setCategoryPrice($price); $manager->persist($priceCategory); } $manager->flush(); /** * Add clients into database */ /* foreach ($this->clients as $i) { $client = new Client(); $client->setEmail($i['email']); $client->setFirstname($i['firstname']); $client->setSurname($i['surname']); $client->setAddress($i['address']); $manager->persist($client); } $manager->flush(); */ /** * Add cinemas, halls and seats into database */ foreach ($this->cinemas as $foo) { $cinema = new Cinema(); $cinema->setName($foo['name']); $cinema->setAddress($foo['address']); for ($i = 0; $i < rand(1, 3); ++$i) { $hall = new Hall(); $hall->setName($i); $hall->setCinema($cinema); for ($j = 0; $j < rand(100, 500); ++$j) { $seat = new Seat(); $seat->setNumber($j + 1); $seat->setHall($hall); $manager->persist($seat); } $manager->persist($hall); } $manager->persist($cinema); } $manager->flush(); /** * Add genres into database */ foreach ($this->genres as $foo) { $genre = new MovieGenre(); $genre->setGenre($foo); $manager->persist($genre); } $manager->flush(); // Fetch genres from DB $repository = $em->getRepository('AppBundle:MovieGenre'); $genres = $repository->findAll(); /** * Add movies into database */ foreach ($this->movies as $foo) { $movie = new Movie(); $movie->setName($foo['name']); $movie->setYear($foo['year']); $genre = $genres[array_rand($genres)]; $movie->setGenre($genre); $movie->setLength($foo['length']); $manager->persist($movie); } $manager->flush(); /** * Add tickets and projections */ // Fetch clients, seats and movies from database $repository = $em->getRepository('AppBundle:Client'); $clients = $repository->findAll(); $repository = $em->getRepository('AppBundle:Movie'); $movies = $repository->findAll(); $repository = $em->getRepository('AppBundle:Hall'); $halls = $repository->findAll(); // Add projections into database for ($i = 0; $i < 600; $i++) { $projection = new Projection(); $movie = $movies[array_rand($movies)]; $hall = $halls[array_rand($halls)]; $date = new \DateTime(); $date2 = new \DateTime(); // Set attributes to projection $timestamp = randomTimestamp('2015/12/01', '2016/01/31'); $date->setTimestamp($timestamp); $projection->setDate($date); $projection->setStart($date); $date2->setTimestamp($timestamp + $movie->getLength() * 60); $projection->setEnd($date2); $projection->setMovie($movie); $projection->setHall($hall); $manager->persist($projection); } $manager->flush(); }
/** * Returns movie * * @ApiDoc( * views={"default", "movie"}, * section="Movie API", * statusCodes={ * 200="Returned when successful", * 400="Returned when an error has occurred" * }, * responseMap={ * 200 = {"class": null, "options": {"data_schema": "movie.schema.yml"}} * } * ) * * @Route("movies/{movie}", name="api_movie_get_movie", requirements={ * "_scope": "[\w,]+" * }, defaults={"_format": "json"}, methods={"GET"}) * * @RestExtra\Scope(name="list", path="movie/view.yml") * * @param Movie $movie * @param ScopeFetcherInterface $scopeFetcher * @param Request $request * @return View */ public function getMovieAction(Movie $movie, ScopeFetcherInterface $scopeFetcher, Request $request) { $datagridBuilder = $this->get('glavweb_datagrid.doctrine_datagrid_builder'); $datagridBuilder->setEntityClassName(Movie::class)->setDataSchema('movie.schema.yml', $scopeFetcher->getAvailable($request->get('_scope'), 'movie/view.yml'))->addFilter('id', null, ['operator' => Filter::EQ]); $datagrid = $datagridBuilder->build(['id' => $movie->getId()]); return $this->view($datagrid->getItem()); }
public function relatedEntitiesAction() { $category = new Entry(); $category->setName('Main Products'); $product = new Movie(); $product->setName('Foo'); $product->setPrice(19.99); $product->setDescription('Lorem ipsum dolor'); // relate this product to the category $product->setCategory($category); $em = $this->getDoctrine()->getManager(); $em->persist($category); $em->persist($product); $em->flush(); return new Response('Created product id: ' . $product->getId() . ' and category id: ' . $category->getId()); //fetchin related $product = $this->getDoctrine()->getRepository('AppBundle:Product')->find($id); $categoryName = $product->getCategory()->getName(); }