Symfony2 / Doctrine - объединение Mysql и Sqlite - PullRequest
2 голосов
/ 10 января 2012

У меня проблема с Symfony2 / Doctrine.

Я начинаю думать, что пытаюсь сделать невозможное, объединяя две отдельные базы данных вместе через отношения.

  • У меня есть база данных mysql и база данных sqlite.
  • У меня есть 2 пакета (каждый говорит с одной из баз данных)
  • У меня есть 2x Entity Manager, с отображениями, работающими правильно.

Я могу получить доступ к каждой базе данных, через свой собственный Entity Manager. Каждый пакет может получить доступ к другим пакетам Entity Manager, и все это хорошо работает в этом направлении.

База данных Sqlite заблокирована для другого приложения,и я должен использовать это как есть.База данных mysql - моя, чтобы делать все, что мне нужно.

  • В базе данных sqlite у меня есть таблица "Projects"
  • В базе данных mysql у меня естьТаблица «Задачи».
  • В одном проекте может быть много задач.

В моей таблице задач есть поле project_id, которое заполняется идентификатором из таблицы проектов.Я пытаюсь сделать так, чтобы эти отношения работали должным образом, чтобы я мог использовать веточку, чтобы делать то, что вы обычно делаете с веточкой в ​​более обычных ситуациях.Т.е. вызвать что-то вроде {{project.tasks}} или {{tasks.projects}} .

На данный момент у меня есть некоторый код в контроллере проекта, передающий задачи в представления и наоборот.Это работает, но это довольно громоздко.То, что я действительно хотел бы сделать, - это правильно отобразить отображение ORM между каждой сущностью.

Может ли Doctrine / Symfony2 сделать это, или я пытаюсь сделать невозможное?

Любая помощь будет принята с благодарностью.

Вот выдержка из моего файла config.yml.

orm:
        auto_generate_proxy_classes: %kernel.debug%
        default_entity_manager:   agile
        entity_managers:
            glue:
                connection:       glue
                mappings:
                    WebplaceGlueBundle: ~
            agile:
                connection:       agile
                mappings:
                    WebplaceAgileBundle: ~

1 Ответ

1 голос
/ 11 января 2012

У нас похожая проблема в OpenSky: некоторые данные хранятся в MongoDB, а некоторые - в MySQL.Мы используем расширение пакета stof's DoctrineExtensions:

https://github.com/opensky/DoctrineExtensionsBundle/tree/orm2odm_references_current

Это позволяет нам добавлять @Gedmo\ReferenceOne аннотации между ODM и ORM.Возможно, вы сможете использовать это напрямую между двумя соединениями ORM, но в противном случае это даст вам отправную точку для обработки отношений между различными уровнями персистентности ...

/**
 * @Gedmo\ReferenceOne(
 *     type="document",
 *     class="MyBundle\Document\User",
 *     identifier="userId"
 * )
 */
...