Bulat
đã triển khai tiện ích mở rộng Doctrine khi chúng tôi ở OpenSky để xử lý các tham chiếu giữa tài liệu MongoDB và bản ghi MySQL, hiện đang nằm trong (được thừa nhận là đã lỗi thời) ngã ba
của DoctrineExtensions
dự định. Bạn sẽ muốn xem orm2odm_references
hoặc openskyfork
cành cây. Để điều này có thể sử dụng được trong dự án của bạn, có thể bạn sẽ muốn chuyển nó sang một nhánh mới của DoctrineExtensions hoặc chỉ cần kết hợp mã vào ứng dụng của bạn. Thật không may, không có tài liệu nào ngoài mã.
Rất may, cũng có bài viết về sách nấu ăn trên trang web Doctrine mô tả cách thực hiện điều này từ đầu. Về cơ bản, bạn dựa vào trình xử lý sự kiện để thay thế thuộc tính của bạn bằng một tham chiếu (tức là đối tượng Proxy chưa được khởi tạo) từ trình quản lý đối tượng khác và hành vi tự nhiên của các đối tượng Proxy là tự tải một cách lười biếng sẽ lo phần còn lại. Với điều kiện trình xử lý sự kiện là một dịch vụ, bạn có thể dễ dàng đưa cả trình quản lý đối tượng ORM và ODM vào đó.
Tính toàn vẹn duy nhất được đảm bảo bởi mô hình này là bạn sẽ nhận được các ngoại lệ khi cố gắng hydrat hóa một tham chiếu xấu, có thể nhiều hơn những gì bạn nhận được bằng cách lưu trữ một ID của cơ sở dữ liệu khác và truy vấn theo cách thủ công.