Hola comunidad, tengo una consulta dql en donde devuelvo todo lo que necesito para evitar el lazy loading pero resulta que el ultimo valor que devuelve la consulta no es un objeto con todas sus propiedades,le falta una propiedad. Sin mas le dejo la consulta y las Entitades
Código:
class Serie
{
/**
* @ORM\OneToMany(targetEntity="SerieGenero", mappedBy="serie")
*/
protected $generos;
}
Código:
class SerieGenero
{
/**
* @var integer
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Serie", inversedBy="generos")
* @ORM\JoinColumn(name="serie_id", referencedColumnName="id", onDelete="Cascade")
*/
private $serie;
/**
* @var integer
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Genero", inversedBy="series")
* @ORM\JoinColumn(name="genero_id", referencedColumnName="id", onDelete="Cascade")
*/
private $genero;
}
Código:
class SerieGenero
{
/**
* @var integer
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Serie", inversedBy="generos")
* @ORM\JoinColumn(name="serie_id", referencedColumnName="id", onDelete="Cascade")
*/
private $serie;
/**
* @var integer
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Genero", inversedBy="series")
* @ORM\JoinColumn(name="genero_id", referencedColumnName="id", onDelete="Cascade")
*/
private $genero;
}
Código PHP:
Ver original<?php
public function getSeriesConCapitulosById($id)
{
$em = $this->getEntityManager();
$consulta = $em->createQuery('
SELECT s, c, gs, g
FROM BackendBundle:Serie s LEFT JOIN s.capitulos c JOIN s.generos gs JOIN gs.genero g
WHERE s.id = :id
');
$consulta->setParameter('id', $id);
return $consulta->getOneOrNullResult();
}
?>
Esta consulta devuelve las series con sus capítulos, con los objetos géneros y dentro de géneros los objetos genero. Pues resulta que cuando recorro los géneros, dentro de un for la ultima instancia de géneros no contiene la relación con genero, me da un error llamando a los métodos necesarios.
Que puede estar dando este error?
saludos y gracias de antemano