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();
}