Связь Symfony «многие ко многим» с внешней базой данных - PullRequest
0 голосов
/ 06 декабря 2010

В моем приложении мне нужно запросить таблицу во внешней базе данных, которая связана с моей базой данных по умолчанию отношением «многие ко многим».Моя промежуточная таблица находится в моей базе данных по умолчанию.

Чтобы сделать это, я изменил свой database.yml для включения внешней базы данных.Затем я добавил в свой schema.yml как промежуточную таблицу (message_news_rel, расположенную в моей базе данных по умолчанию), так и таблицу из внешнего источника (новости).

Вот как я определил отношения:

MessageNews:
  connection: uda_iPoste
  tableName: message_news_rel
  columns:
    message_id:
      type: integer(10)
      primary: true
    news_id:
      type: integer(10)
      primary: true
  relations:
    Message:
      local: message_id
      foreign: id
      foreignAlias: MessageNewses
    News:
      local: news_id
      foreign: id
      foreignAlias: MessageNewses

News:
...
  relations:
    Messages:
      class: Message
      foreignAlias: Newses
      refClass: MessageNews
      local: news_id
      foreign: message_id

Message:
...
  relations:
    Newses:
      class: News
      foreignAlias: Messages
      refClass: MessageNews
      local: message_id
      foreign: news_id

Когда я пытаюсь использовать модель в своем приложении, я получаю эту ошибку:

Base table or view not found: 1146 Table 'uda_web_dev.message_news_rel' doesn't exist

... ссылаясьНет сомнений в этой части запроса:

FROM news n LEFT JOIN message_news_rel 

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

Пожалуйста, дайте мне знать, если я пропустил какие-либо важные детали.

Есть ли известное решение этой проблемы?

1 Ответ

0 голосов
/ 27 декабря 2010

Если вы думаете об этом рационально, то, о чем вы спрашиваете, слишком много. Каждый запрос или транзакция должны включать только те таблицы, которые существуют в базе данных, которую вы собираетесь выполнить. Не забывайте, что абстракция базы данных всегда имеет свои ограничения, и если вы проверяете каждую реализацию, они абстрагируют создание запроса и манипулирование им, но я не вижу, как они могут абстрагировать базы данных.

Так что, если вам абсолютно необходимо разделить базы данных, то внедрите некоторый кластер дабатаз. В противном случае таблицы реализации в запросе находятся в той же базе данных, а затем объединяются в Symfony.

...