Quantcast
Channel: Grafikart | Derniers Sujets du forum
Viewing all articles
Browse latest Browse all 1542

OutOfMemoryException - Pb OneToMany

$
0
0
Débutant sur Symfony2, je bute sur un problème depuis 3 jours et impossible de comprendre.

J'ai deux entités : Zone et Enceinte. Une enceinte est forcement liée à une zone et il est possible depuis la zone de récupérer toutes les enceintes liées.

Code de l'entité Zone simplifiée
class Zone
{
    public function __construct()
    {
        $this->enceintes = new ArrayCollection();
    }
 
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
 
    /**
     * @ORM\OneToMany(targetEntity="Enceinte", mappedBy="zone")
     * @ORM\JoinColumn(nullable=true)
     */
    protected $enceintes;

Et pour l'entité Enceinte :
class Enceinte
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
 
    /**
     * @ORM\ManyToOne(targetEntity="Zone", inversedBy="enceintes")
     * @ORM\JoinColumn(nullable=false)
     */
    private $zone;

J'essaie depuis un controller d'effectuer le code suivant juste pour tester les variables :
...
$em = $this->getDoctrine()->getManager();
 
$zone = $em->getRepository('MonBundle:Zone')->find(2);
var_dump($zone);
die();
...

et je tombe sur l'erreur :

OutOfMemoryException: Error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 492797952 bytes)

En essayant de débugger, j'ai retirer la liaison onetomany entre la zone et l'enceinte et là il m'affiche bien la zone en question !!!
Donc j'ai remis le lien et cela replante à nouveau... J'ai donc tester les codes suivants :

$em = $this->getDoctrine()->getManager();
 
$zone = $em->getRepository('MonBundle:Zone')->find(2);
var_dump($zone.getId());
die();
...


Il m'affiche bien l'Id de la zone.

$em = $this->getDoctrine()->getManager();
 
$zone = $em->getRepository('MonBundle:Zone')->find(2);
var_dump($zone.getEnceintes());
die();
...


Et là je retombe sur l'erreur.
J'ai l'impression qu'il a du mal à gérer les ArrayCollection...
Avez-vous des pistes pour me débloquer ?

Par avance merci.

Viewing all articles
Browse latest Browse all 1542

Trending Articles