Symfony2 Учение ДискриминаторКарта две базы данных

У меня есть две базы данных в моем проекте.

Первая база данных с именем: global
Вторая база данных называется: first_db

Глобальный База данных имеет таблицу Car а также Moto и first_db база данных имеет таблицы Items , Bus а также Ship,

Ниже поста вы видите аннотации таблицы предметов.

 * @ORM\Table(name="Items")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap( {
*      "car" = "Project\ItemBundle\EntityGlobal\Car",
*      "moto" = "Project\ItemBundle\EntityGlobal\Moto",
*      "bus" = "Bus",
*      "ship" = "Ship",
*  }
* )

Когда я создаю запрос с DQL, он не понимает, что car а также moto находятся в другой базе данных. Я нашел бета-решение, если лица Car а также Moto установить аннотацию с помощью этого метода

* @ORM\Table(name="global.Moto")
* @ORM\Table(name="global.Car")

При обновлении схемы у меня нет проблем, но это не очень безопасно. Я знаю, что могу писать нативные запросы, но я не уверен, что это оптимальный способ.

Каков лучший способ сделать это, не используя нативные запросы?

2

Решение

В базовой настройке от Symfony вы используете только 1 базу данных, которая определена в файле parameters.yml. Использование второй базы данных возможно, но усложняет все

Использование нескольких баз данных (соединений) можно настроить так: http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html

Но соединение разных сущностей из разных баз данных (соединений) невозможно, смотрите этот ответ: Использование отношений с несколькими менеджерами сущностей

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]