<?phpnamespace App\EventSubscriber;use App\Entity\Commune;use App\Entity\Province;use App\Entity\Ranking;use Doctrine\ORM\EntityManagerInterface;use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;use mysql_xdevapi\Exception;use Symfony\Component\EventDispatcher\EventSubscriberInterface;class rankingSubscriber implements EventSubscriberInterface{ private $entityManager; public function __construct(EntityManagerInterface $entityManager) { $this->entityManager = $entityManager; } public static function getSubscribedEvents() { return [ BeforeEntityPersistedEvent::class => ['setCommunes'], BeforeEntityUpdatedEvent::class => ['updateCommune'] ]; } public function setCommunes(BeforeEntityPersistedEvent $event) { try{ $entity = $event->getEntityInstance(); if (( $entity instanceof Ranking )) { if (count($entity->getProvince()) >= 1) { $provinces = $entity->getProvince(); $communees = $entity->getCommune(); $ids = []; $comm=[]; if (count($communees) >= 1) { foreach ($communees as $c) { $commune = $this->entityManager->getRepository(Commune::class)->find($c); array_push($comm, $commune); } } foreach ($provinces as $p) { $communes = $this->entityManager->getRepository(Commune::class)->findBy(["idProvince" => $p->getId()]); foreach ($communes as $c) { $commune = $this->entityManager->getRepository(Commune::class)->find($c); array_push($ids, $commune); } $result = array_unique(array_merge($ids, $comm)); $entity->setCommune($result); $this->entityManager->persist($entity); $this->entityManager->flush(); } } } } catch (\Doctrine\ORM\ORMException $e){ return $e; } } public function updateCommune(BeforeEntityUpdatedEvent $event) { try { $entity = $event->getEntityInstance(); if (($entity instanceof Ranking)) { if (count($entity->getProvince()) >= 1) { $provinces = $entity->getProvince(); $communees = $entity->getCommune(); $ids = []; $comm=[]; if (count($communees) >= 1) { foreach ($communees as $c) { $commune = $this->entityManager->getRepository(Commune::class)->find($c); array_push($comm, $commune); } } foreach ($provinces as $p) { $communes = $this->entityManager->getRepository(Commune::class)->findBy(["idProvince" => $p->getId()]); foreach ($communes as $c) { $commune = $this->entityManager->getRepository(Commune::class)->find($c); array_push($ids, $commune); } // $result = array_merge($ids, $comm); $result =array_unique(array_merge($ids, $comm), SORT_REGULAR); $entity->setCommune($result); $this->entityManager->persist($entity); $this->entityManager->flush(); } } } } catch (\Doctrine\ORM\ORMException $e) { return $e; } }}