Bulat
implementeerde een Doctrine-extensie terwijl we bij OpenSky waren voor het verwerken van verwijzingen tussen MongoDB-documenten en MySQL-records, die momenteel in hun (weliswaar verouderde) vork
van de DoctrineExtensions
projecteren. U wilt kijken naar de orm2odm_references
of openskyfork
takken. Om dit bruikbaar te maken in je project, wil je het waarschijnlijk overzetten naar een nieuwe fork van DoctrineExtensions, of gewoon de code in je applicatie opnemen. Helaas is er geen documentatie behalve de code zelf.
Gelukkig is er ook kookboekartikel op de Doctrine-website die beschrijft hoe u dit vanaf het begin kunt implementeren. Kortom, u vertrouwt op een gebeurtenislistener om uw eigendom te vervangen door een referentie (d.w.z. niet-geïnitialiseerd proxy-object) van de andere objectmanager en het natuurlijke gedrag van proxy-objecten om zichzelf lui te laden, zorgt voor de rest. Op voorwaarde dat de gebeurtenislistener een service is, kunt u er gemakkelijk zowel de ORM- als ODM-objectmanagers in injecteren.
De enige integriteit die door dit model wordt gegarandeerd, is dat u uitzonderingen ontvangt wanneer u een slechte referentie probeert te hydrateren, wat waarschijnlijk meer is dan u zou krijgen door simpelweg een ID van de andere database op te slaan en handmatig te zoeken.