- Ymox,
Bonjour à tous
Je tente d’utiliser la librairie atlantic18/doctrine-extensions pour effectuer des mappings entre mes parties ORM et ODM (MongoDB).
J’ai pu mettre mes relations, les événements sont bien capturés et les requêtes retournent les bonnes valeurs : si je mets des dumps($object)
là et là, j’ai bien mes propriétés qui sont remplies.
Mais pour une raison qui m’échappe (même si j’ai quelques idées), dans mon objet "final", je ne récupère pas les valeurs. Voici un exemple simple :
1 2 3 4 5 6 7 8 | <?php class Account { /** * @Gedmo\ReferenceMany(type="document", class="Transaction", mappedBy="account") * @var \Gedmo\References\LazyCollection */ private $transactions } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php class Transaction { /** * @ODM\Field(type="int") */ private $accountId; /** * @Gedmo\ReferenceOne(type="entity", class="Account", inversedBy="transactions", identifier="accountId") * @var Account */ private $account; } |
Dans ce cas, quand je charge un objet Transaction, je vois bien que la valeur est récupérée après la ligne 56 du ReferenceListener, mais quand j’utilise l’objet plus tard, la propriété est nulle.
Et si je charge un objet Account, le callback est bien renseigné dans l’objet LazyCollection (et avec les valeurs correctes), mais si dans un template j’aimerais boucler sur les transactions, il m’est dit que la propriété est nulle.
Le serveur fonctionne avec PHP 7, et au moment d’écrire ce message il faut alcaeus/mongo-php-adapter du fait que Doctrine ODM n’est pas prévu pour cette version de PHP, mais ça peut être un élément d’explication.
Est-ce que quelqu’un aurait déjà rencontré ce comportement et aurait une solution à me proposer ? Je pourrais évidemment prendre le temps de créer mes propres écouteurs d’événements, mais outre que ça me prendrait un certain temps, je ne pense pas que ça change grand-chose…
Merci
Edit
Je mettrai en résolu quand j’aurai compris pourquoi ou que j’aurai abandonné, mais après avoir redémarré l’ordinateur, étrangement, plus de souci…
Edit 2
Au final, c’est vite vu : le problème était lié à une autre propriété qui n’avait jamais été renseignée…