Bulat
implementierte während unserer Zeit bei OpenSky eine Doctrine-Erweiterung zur Handhabung von Referenzen zwischen MongoDB-Dokumenten und MySQL-Einträgen, die derzeit in ihrem (zugegebenermaßen veralteten) fork
der DoctrineExtensions
Projekt. Sie sollten sich entweder die orm2odm_references
ansehen oder openskyfork
Geäst. Damit dies in Ihrem Projekt verwendet werden kann, möchten Sie es wahrscheinlich auf einen neuen Fork von DoctrineExtensions portieren oder einfach den Code in Ihre Anwendung integrieren. Leider gibt es außer dem Code selbst keine Dokumentation.
Zum Glück gibt es auch Kochbuchartikel auf der Doctrine-Website, die beschreibt, wie dies von Grund auf implementiert wird. Grundsätzlich verlassen Sie sich darauf, dass ein Ereignis-Listener Ihre Eigenschaft durch eine Referenz (d. h. ein nicht initialisiertes Proxy-Objekt) aus dem anderen Objektmanager ersetzt, und das natürliche Verhalten von Proxy-Objekten, sich selbst träge zu laden, erledigt den Rest. Vorausgesetzt, der Ereignis-Listener ist ein Dienst, können Sie sowohl den ORM- als auch den ODM-Objektmanager problemlos darin einfügen.
Die einzige von diesem Modell garantierte Integrität besteht darin, dass Sie Ausnahmen erhalten, wenn Sie versuchen, eine fehlerhafte Referenz zu hydrieren, was wahrscheinlich mehr ist, als wenn Sie einfach eine ID der anderen Datenbank speichern und manuell abfragen würden.