public function findByProvider(Provider $provider) { $idArray = []; /** @var Contact $contact */ foreach ($provider->getContacts() as $contact) { $idArray[] = $contact->getId(); } $query = $this->createQueryBuilder('c')->where('c.id IN (:id)')->setParameter('id', $idArray); return $query; }
/** * @Route("/edit/{provider}", name="provider_edit",options={"expose"=true}) * @Template("AppBundle:Provider:edit.html.twig") * @param Provider $provider * @ParamConverter("provider", class="AppBundle:Provider") * @return Response */ public function editAction(Request $request, Provider $provider) { $originalContact = new ArrayCollection(); foreach ($provider->getContacts() as $c) { $originalContact->add($c); } $originalTags = new ArrayCollection(); foreach ($provider->getTags() as $t) { $originalTags->add($t); } $form = $this->createForm(new ProviderType(), $provider); $form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); foreach ($originalContact as $c) { if (false === $provider->getContacts()->contains($c)) { $provider->removeContact($c); $em->remove($c); } } /** @var Tag $t */ foreach ($originalTags as $t) { if (false === $provider->getTags()->contains($t)) { $t->removeProvider($provider); $em->persist($t); } } $provider->setLastModification(new \DateTime()); /** @var Tag $tag */ foreach ($provider->getTags() as $tag) { $tag->addProvider($provider); $em->persist($tag); } $em->persist($provider); $em->flush(); return $this->redirect($this->generateUrl('provider_show', array('provider' => $provider->getId()))); } return array('form' => $form->createView()); }