Bulat
implementerade en Doctrine-tillägg medan vi var på OpenSky för att hantera referenser mellan MongoDB-dokument och MySQL-poster, som för närvarande finns i deras (visserligen föråldrade) gaffel
av DoctrineExtensions
projekt. Du kommer att vilja titta på antingen orm2odm_references
eller openskyfork
grenar. För att detta ska vara användbart i ditt projekt, vill du förmodligen överföra det till en ny gaffel av DoctrineExtensions, eller helt enkelt infoga koden i din applikation. Tyvärr finns det ingen dokumentation förutom själva koden.
Tack och lov finns det också kokboksartikel på Doctrines webbplats som beskriver hur man implementerar detta från grunden. I grund och botten förlitar du dig på att en händelseavlyssnare ersätter din egendom med en referens (d.v.s. oinitierat proxyobjekt) från den andra objekthanteraren och det naturliga beteendet hos proxyobjekt för att lätt ladda sig själva tar hand om resten. Förutsatt att händelseavlyssnaren är en tjänst kan du enkelt injicera både ORM- och ODM-objekthanterarna i den.
Den enda integriteten som garanteras av denna modell är att du kommer att få undantag när du försöker hydratisera en dålig referens, vilket förmodligen är mer än du skulle få genom att helt enkelt lagra ett ID för den andra databasen och fråga manuellt.