Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Custom Repository Classes

Estas en el tema de Custom Repository Classes en el foro de Symfony en Foros del Web. Buenos días. Tengo un controlador: /src/IP/RestBundle/Controller/DefaultController.php Tengo una entidad: /src/IP/RestBundle/Entity/Productos.php Tengo un repository de la entidad: /src/IP/RestBundle/Entity/ProductosRepository.php En el DefaultController.php quiero usar una función definida ...
  #1 (permalink)  
Antiguo 10/06/2016, 03:45
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años
Puntos: 0
Pregunta Custom Repository Classes

Buenos días.
Tengo un controlador: /src/IP/RestBundle/Controller/DefaultController.php
Tengo una entidad: /src/IP/RestBundle/Entity/Productos.php
Tengo un repository de la entidad: /src/IP/RestBundle/Entity/ProductosRepository.php

En el DefaultController.php quiero usar una función definida en el ProductosRepository.php para obtener todos los productos en base a unos parámetros.

En Productos.php tengo:

Código:
<?php

namespace IP\RestBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Productos
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="IP\RestBundle\Entity\ProductosRepository")
 */
class Productos
{
...

En ProductosRepository.php tengo:
Código:
<?php

namespace IP\RestBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * ProductosRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class ProductosRepository extends EntityRepository
{
	public function findAllProductos()
	{
		$em = $this->get('doctrine')->getManager();

        $dql = 'SELECT p FROM IPRestBundle:Productos p';

        return $em->createQuery($dql)
            ->setFirstResult(0)
            ->setMaxResults(2)
            ->getResult();
	}

}
Finalmente, dentro del DefaultController.php tengo esto:

Código:
$em = $this->getDoctrine()->getManager();

        $productos = $em->getRepository('IPRestBundle:Productos')->findAllProductos();
        print_r($productos);
        exit();
Al probarlo me devuelve esto:
Código:
Undefined method 'get'. The method name must start with either findBy or findOneBy!
He definido todo esto siguiendo lo que indican en la página de Symfony:
http://symfony.com/doc/2.7/book/doct...sitory-classes

He borrado la cache, la cache de doctrine, etc, pero nada de nada.
¿Alguien sabe por qué pasa esto por favor?

Muchas gracias.
  #2 (permalink)  
Antiguo 10/06/2016, 04:05
 
Fecha de Ingreso: marzo-2007
Mensajes: 59
Antigüedad: 17 años
Puntos: 0
Respuesta: Custom Repository Classes

La culpa era mía, la función del repository estaba mal.
Lo correcto es esto:
Código:
public function findAllProductos()
	{

        $dql = 'SELECT p FROM IPRestBundle:Productos p';

        return $this->getEntityManager()
        	->createQuery($dql)
            ->setFirstResult(0)
            ->setMaxResults(2)
            ->getResult();
	}
Lo dejo comentado por si a alguien le puede servir.

Perdonad.
Un saludo

Etiquetas: classes, custom
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:44.