Bułat
wdrożyliśmy rozszerzenie Doctrine, gdy byliśmy w OpenSky, do obsługi odwołań między dokumentami MongoDB i rekordami MySQL, które obecnie znajdują się w ich (co prawda przestarzałym) widelec
DoctrineExtensions
projekt. Będziesz chciał spojrzeć na orm2odm_references
lub openskyfork
gałęzie. Aby można było to wykorzystać w projekcie, prawdopodobnie będziesz chciał przenieść go do nowego rozwidlenia DoctrineExtensions lub po prostu włączyć kod do swojej aplikacji. Niestety nie ma dokumentacji poza samym kodem.
Na szczęście istnieje również artykuł w książce kucharskiej na stronie Doctrine, która opisuje, jak wdrożyć to od podstaw. Zasadniczo polegasz na detektorze zdarzeń, który zastąpi swoją właściwość referencją (tj. niezainicjowanym obiektem Proxy) z innego menedżera obiektów, a naturalne zachowanie obiektów Proxy w celu leniwego ładowania się zajmuje resztą. Zakładając, że nasłuchiwanie zdarzeń jest usługą, można łatwo wstrzyknąć do niego zarówno menedżery obiektów ORM, jak i ODM.
Jedyną integralnością gwarantowaną przez ten model jest to, że będziesz otrzymywać wyjątki podczas próby uwodnienia złej referencji, co prawdopodobnie jest czymś więcej, niż uzyskasz, po prostu przechowując identyfikator innej bazy danych i wykonując ręczne zapytania.