Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Memory Overflow at Doctrine Module with related entities

Ouverte
#22 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
30/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
php
Domaine
databases, testing

Piste de recherche

Commencez par le test fonctionnel utilisant persistEntity et grabEntityFromRepository, puis examinez comment le module Doctrine gère les entités avec des relations oneToMany. Comparez les cas TestGroup et TestUser avec le comportement du contrôleur ; le travail est terminé lorsque les entités associées ne produisent plus de sortie récursive ni de dépassement de mémoire.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

If an entity is on the 1 side of a 1:n relationship (i.e. it has oneToMany), and I handle it with the Doctrine Module, the object gets infinitely large, thereby causing a PHP memory overflow.

Details

I've set up these two entities:

AppBundle\Entity\TestGroup:
    type: entity
    table: test_group

    id:
        id:
            type: integer
            generator:
                strategy: IDENTITY
              
    fields:
        name:
            type: string
            length: 50
            nullable: true

    oneToMany:
        test_user:
            targetEntity: TestUser
            mappedBy: test_group
AppBundle\Entity\TestUser:
    type: entity
    table: test_user

    id:
        id:
            type: integer
            generator:
                strategy: IDENTITY
              
    fields:
        group_id:
            type: integer
            nullable: true
        name:
            type: string
            length: 50
            nullable: true

    manyToOne:
        test_group:
            targetEntity:
            inversedBy: test_user
            joinColumn:
                name: group_id
                referencedColumnName: id

Now I run this functional test:

public function tryMemoryLeak (FunctionalTester $I)
{
    $group = new \AppBundle\Entity\TestGroup();
    var_dump($group);
    $I->persistEntity($group);
    die;
    var_dump($group);
}

Result: The output from var_dump is normal; and the entity exists in the database. But as soon as I remove die; the bug occurs: I get endless (i.e. hundreds or thousands of lines) output in the console. The same happens if I fetch the entity from the database with $I->grabEntityFromRepository.
This explains what I initially observed: If I try to pass the object to some function, I get a memory overflow crash from PHP.

I've tried it with SQLite and PostgreSQL.

If I do the same with the TestUser entity, everything is normal. So I'm figuring it has something to do with the oneToMany setting.

And if I do it in a controller, everything is fine too - so I'm figuring there's no error in the entities.

Setup
  • Codeception version: 2.3.5
  • PHP Version: 7.1
  • Operating System: Windows 10
Langage dominant
PHP
Étoiles
4
Forks
2
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de Codeception/module-doctrine

Toutes les issues de Codeception/module-doctrine

Issues similaires

Plus d'issues PHP

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.