Bulat
implementerede en Doctrine-udvidelse, mens vi var hos OpenSky til håndtering af referencer mellem MongoDB-dokumenter og MySQL-poster, som i øjeblikket sidder i deres (ganske vist forældede) gaffel
af DoctrineExtensions
projekt. Du vil enten se på orm2odm_references
eller openskyfork
grene. For at dette kan bruges i dit projekt, vil du sandsynligvis overføre det til en ny forgrening af DoctrineExtensions eller blot inkorporere koden i din applikation. Desværre er der ingen dokumentation udover selve koden.
Heldigvis er der også kogebogsartikel på Doctrines hjemmeside, der beskriver, hvordan man implementerer dette fra bunden. Dybest set stoler du på, at en begivenhedslytter erstatter din ejendom med en reference (dvs. ikke-initialiseret proxy-objekt) fra den anden objektmanager, og den naturlige adfærd af proxy-objekter til dovent indlæsning af sig selv sørger for resten. Forudsat at begivenhedslytteren er en tjeneste, kan du nemt injicere både ORM- og ODM-objektmanagere i den.
Den eneste integritet, der garanteres af denne model, er, at du vil modtage undtagelser, når du forsøger at hydrere en dårlig reference, hvilket sandsynligvis er mere, end du ville få ved blot at gemme et ID for den anden database og forespørge manuelt.