Índice

Los repositorios y el DQL

1. Los repositorios

a. Una función de centralizador

El repositorio es el lugar donde se agrupan las consultas relativas a una entidad, la mayoría relacionadas con la recuperación de datos (SELECT). El repositorio puede contener operaciones de creación, modificación o eliminación.

Cada entidad tiene su propio repository. Se puede materializar por una clase definida por el desarrollador, si se indica la propiedad repositoryClass de la anotación @Entity o si es necesario, por una clase interna de Doctrine2.

Hemos utilizado un repositorio durante un ejemplo anterior (modificación de una entidad). Lo utilizamos para recuperar una entidad en función del valor de su clave primaria:

$repositorio = $em->getRepository(’EniDemoBundle:Libro’);  
  
$libro = $repositorio->find(1);

Aquí, la variable $em contiene la EntityManager.

Descompongamos el código anterior en varias partes distintas.

La recuperación del repository

Para recuperar el repositorio de una entidad dada, debe invocar al método getRepository() de la EntityManager. Como argumento, recibe el FQCN (Fully Qualified Class Name) de la entidad cuyo repositorio se quiere.

Como ha podido comprobar, EniDemoBundle:Libro no es un nombre de clase, sino un acceso directo específico de Symfony, que se corresponde con Eni\DemoBundle\Entity\Libro. Los dos son válidos y se pueden utilizar. El primero tiene la ventaja de ser más corto.

La recuperación ...