Para no hacer código espagueti y tener todas las consultas en el modelo cree un repositorio de consultas para la administración de usuarios (como bien se esta trabajando con paquetes lo recomendable es personalizar las consultas por cada paquete por ejemplo un repositorio para usuarios, recursos, acuerdos, notificaciones, etc) y así únicamente llamar al método y enviarle los parámetros separando totalmente las capas.

proceso:

  1. adherir el nombre del repositorio al archivo mapeado (src/BUNDLE/BUNDLEModeloBundle/Resources/config/doctrine/Entidad.orm.yml)
    1. No es necesario un repositorio por cada tabla.
  2. en la tercer linea, justo abajo de “type: entity” agregue la información del repositorio “repositoryClass: BUNDLE\BUNDLEModeloBundle\Repository\UserRepository
  3. genere otra vez la entidad “php app/console doctrine:generate:entities SafBundle:Entidad
  4. cree el directorio “Repository” en “src/BUNDLE/BUNDLEModeloBundle/” según definí en el paso 2
  5. cree el archivo “UserRepository.php” en el directorio del paso anterior, el nombre proviene de la ultima parte de la información agregada en el paso 2
  6. programe la consulta DQL (Si no les parece la consulta pueden usar el método asistente createQuery y hacen laconsulta en lenguaje natural)

Ahora ya tengo lista mi consulta y cuando la necesito desde el controlador solo la invoco de la siguiente forma:

$em       = $this->getDoctrine()->getEntityManager();
$acceso = $em->getRepository(‘SafBundle:Entidad’)
->findSafiUser($post[‘correo’]
,$post[“clave”]);
Anuncios