/** * Remove reviews * * @param Review $review */ public function removeReview(Review $review) { $review->setRestaurant(null); $this->reviews->removeElement($review); }
/** * @ApiDoc( * description="New Batch of Reviews", * statusCodes={201="Batch of Reviews"}, * section="Review", * parameters={ * {"name"="restaurants", "dataType"="integer", "required"=true } * }) * @Route("/api/reviews/batch") * @Method({"POST"}) * @return View */ public function batchInsertAction() { $user = $this->getUser(); $positions = array(); $request = $this->requestStack->getCurrentRequest(); $ids = $request->request->get('restaurants'); $restaurants = $this->restaurantRepository->getByIds($ids); $reviews = array(); /** @var Restaurant $restaurant */ foreach ($restaurants as $restaurant) { if (null === $restaurant->getGeoname() || null === $restaurant->getCuisine()) { continue; } if (isset($positions[$restaurant->getRankingKey()])) { $positions[$restaurant->getRankingKey()]++; } else { $positions[$restaurant->getRankingKey()] = 1; } $review = new Review(); $review->setGeoname($restaurant->getGeoname()); $review->setCost($restaurant->getAverageCost()); $review->setCuisine($restaurant->getCuisine()); $review->setPosition($positions[$restaurant->getRankingKey()]); $review->setUser($user); $review->setComment(''); $review->setRestaurant($restaurant); $reviews[] = $review; $this->validate($review); $user->incrementReviewsCount(); $this->entityManager->persist($review); $this->cacheManager->invalidateOnInsert($review); } $this->entityManager->flush(); return $this->view(array('reviews' => $reviews), 201); }