public function loadPerfils($prfs) { /** @var PerfilInterface $prf */ foreach ($prfs as $prf) { $encontrado = false; foreach ($this->getPerfilXPermisos() as $pxp) { if ($pxp->getPerfil()->getId() == $prf->getId()) { $encontrado = true; break; } } if (!$encontrado) { $pxpn = new PerfilXPermiso(); $pxpn->setPermiso($this)->setPerfil($prf); $this->addPerfilXPermiso($pxpn); } } }
/** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $perfilManager = $this->getContainer()->get('ad_perfil.perfil_manager'); $perfil = $perfilManager->find($input->getArgument('perfil_id')); if (is_null($perfil)) { throw new \RuntimeException('El perfil ingresado no esta registrado en nuestra base de datos'); } $em = $this->getContainer()->get('doctrine')->getManager(); $permisos = $em->getRepository('ADPerfilBundle:Permiso')->findByNombreParcial('ad_perfil-'); foreach ($permisos as $permiso) { /** @var PerfilXPermiso $pxp */ $pxp = $em->getRepository('ADPerfilBundle:PerfilXPermiso')->findOneBy(['perfil' => $perfil->getId(), 'permiso' => $permiso->getId()]); if (!$pxp) { $pxp = new PerfilXPermiso(); $pxp->setPermiso($permiso)->setPerfil($perfil)->setAcceso(true); } else { $pxp->setAcceso(true); } $em->persist($pxp); } $em->flush(); }