Una vez que obtienes el repositorio, tienes acceso a todo tipo de métodos útiles:
// consulta por la clave principal (generalmente 'id') $product = $repository->find($id); // métodos con nombres dinámicos para buscar un valor en función de alguna columna $product = $repository->findOneById($id); $product = $repository->findOneByName('foo'); // obtiene todos los productos $products = $repository->findAll(); // busca productos basándose en el valor de una columna $products = $repository->findByPrice(19.99);
También puedes utilizar los métodos findBy
y findOneBy
para obtener objetos en función de varias condiciones:
// busca un producto con ese nombre y ese precio $product = $repository->findOneBy(array( 'name' => 'foo', 'price' => 19.99 )); // obtiene todos los productos con un nombre determinado // y ordena los resultados por precio $product = $repository->findBy( array('name' => 'foo'), array('price' => 'ASC') );
$repository = $this->getDoctrine() ->getRepository('AcmeStoreBundle:Product'); $query = $repository->createQueryBuilder('p') ->where('p.price > :price') ->setParameter('price', '19.99') ->orderBy('p.price', 'ASC') ->getQuery(); $products = $query->getResult();
$em = $this->getDoctrine()->getManager(); $query = $em->createQuery( 'SELECT p FROM AcmeStoreBundle:Product p WHERE p.price > :price ORDER BY p.price ASC' )->setParameter('price', '19.99'); $products = $query->getResult();