Bulat
implémenté une extension Doctrine pendant que nous étions chez OpenSky pour gérer les références entre les documents MongoDB et les enregistrements MySQL, qui se trouve actuellement dans leur (certes obsolète) fork
des DoctrineExtensions
projet. Vous voudrez regarder soit les orm2odm_references
ou openskyfork
branches. Pour que cela soit utilisable dans votre projet, vous voudrez probablement le porter sur un nouveau fork de DoctrineExtensions, ou simplement incorporer le code dans votre application. Malheureusement, il n'y a pas de documentation à part le code lui-même.
Heureusement, il y a aussi article de livre de cuisine sur le site Web de Doctrine qui décrit comment l'implémenter à partir de zéro. Fondamentalement, vous comptez sur un écouteur d'événement pour remplacer votre propriété par une référence (c'est-à-dire un objet proxy non initialisé) de l'autre gestionnaire d'objets et le comportement naturel des objets proxy pour se charger paresseusement s'occupe du reste. À condition que l'écouteur d'événements soit un service, vous pouvez facilement y injecter les gestionnaires d'objets ORM et ODM.
La seule intégrité garantie par ce modèle est que vous recevrez des exceptions lorsque vous essayez d'hydrater une mauvaise référence, ce qui est probablement plus que ce que vous obtiendriez en stockant simplement un ID de l'autre base de données et en interrogeant manuellement.