entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Error relación reflexiva PHP + DOCTRINE

Hola. Antes de nada gracias.
Estoy utilizando Php + Doctrine, y tengo un problema en una relación reflexiva
One To Many en la clase Categoria:

Cuando realizo una consulta para obtener una categoria la cual no tiene categoriaPadre
no da error, pero si tiene categoriaPadre me da el siguiente error:

<br>
<b>Fatal error</b>:  Uncaught exception 'ReflectionException' with message
'Class productos does not exist' in 
C:\xampp\htdocs\farmaciaBalerma\privado\doctrine\vendor\doctrine\common\lib\Doctrine\Common\Proxy\ProxyGenerator.php:949

Stack trace:

0 C:\xampp\htdocs\farmacia\privado\doctrine\vendor\doctrine\common\lib
\Doctrine\Common\Proxy\ProxyGenerator.php(949): ReflectionParameter->getClass()

1 C:\xampp\htdocs\farmacia\privado\doctrine\vendor\doctrine\common\lib
\Doctrine\Common\Proxy\ProxyGenerator.php(902): Doctrine\Common\Proxy\
ProxyGenerator->getParameterType(Object(Doctrine\ORM\Mapping\ClassMetadata), Object(ReflectionMethod), Object(ReflectionParameter))

2 C:\xampp\htdocs\farmacia\privado\doctrine\vendor\doctrine\common\lib
\Doctrine\Common\Proxy\ProxyGenerator.php(779): Doctrine\Common\Proxy\
ProxyGenerator->buildParametersString(Object(Doctrine\ORM\Mapping\ClassMetadata), Object(ReflectionMethod), Array)

3 [internal function]: Doctrine\Common\Proxy\ProxyGenerator->generateMethods(Object(Doctrine\ORM\M in <b>C:\xampp\htdocs\farmacia\privado\doctrine\vendor\doctrine\common\lib
\Doctrine\Common\Proxy\Exception\UnexpectedValueException.php</b> on line <b>53</b><br>

Os comento, tengo 3 Clases: Producto, Categoria, ProductoCategoria y tengo las siguientes relaciones:

 Relación OneToMany Bidireccional de Producto a ProductoCategoria
 Relación OneToMany Bidireccional de Categoria a ProductoCategoria
 Relación OneToMany Reflexiva de Categoria

Os muestro la clase Categoria:

/**
*@Entity @Table(name="categorias")
**/
use Doctrine\Common\Collections\ArrayCollection;
class Categoria{ 
    /**
    *@Id 
    *@Column(type="integer") 
    *@GeneratedValue
    * @var int
    */
    private $id;

    /**
     * @ManyToOne(targetEntity="Categoria", inversedBy="subcategorias")
     * @JoinColumn(name="parent_id", referencedColumnName="id")
     **/
    private $categoriaPadre;
     /**
     * @OneToMany(targetEntity="Categoria", mappedBy="categoriaPadre")
     **/
    private $subcategorias;

     /**
     * @OneToMany(targetEntity="ProductoCategoria", mappedBy="categoria")
     **/
    private $productos;

    function __construct()
    {

        $this->productos = new ArrayCollection();
        $this->subcategorias = new ArrayCollection();

    }

}

La clase ProductoCategoria

/**
*@Entity @Table(name="ProductoCategorias")
**/
class ProductoCategoria{
    /**
     * @Id
     * @ManyToOne(targetEntity="Producto", inversedBy="categorias")
     * @JoinColumn(name="producto_id", referencedColumnName="id")
     **/
    private $producto;
   /**
     * @Id
     * @ManyToOne(targetEntity="Categoria", inversedBy="productos")
     * @JoinColumn(name="categoria_id", referencedColumnName="id")
     **/
    private $categoria;
    /**
    *@Column(type="integer")
    * @var int
    */
    private $posicion;

La clase Producto:

/**
*@Entity @Table(name="productos")
**/
class Producto{
    /**
    *@Id 
    *@Column(type="integer") 
    *@GeneratedValue
    * @var int
    */
    private $id;

    /**
    *@Column(length=150)
    * @var string
    */
    private $nombre;

    /**
     * @OneToMany(targetEntity="ProductoCategoria", mappedBy="producto")
     **/
    private $categorias;
    function __construct()
    {

        $this->categorias = new ArrayCollection();

    }

1 Respuesta

1voto

Pepers Puntos270

Solucionado. El método setProductos($productos) contenía un error de escritura en el parámetro.
Gracias. Espero no tener errores similares.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta