繁体   English   中英

Symfony与外部数据库的多对多关系

[英]Symfony Many-to-Many Relationship with External Database

在我的应用程序中,我需要查询外部数据库数据库中的表,该数据库通过多对多关系链接到我的默认数据库。 我的中间表位于我的默认数据库中。

为此,我修改了database.yml以包括外部数据库。 然后,我将中介表(位于默认数据库中的message_news_rel)和来自外部源(新闻)的表添加到了schema.yml中。

这是我指定关系的方式:

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在尝试建立关系时没有将连接从默认数据库切换到外部数据库。

如果我遗漏了任何重要细节,请告诉我。

是否有针对此问题的已知修复程序?

如果您考虑合理,那么您的要求就很多。 每个查询或事务都应仅包含要执行的数据库中存在的表。 不要忘记,数据库抽象总是有其局限性,如果您检查每个实现,它们都会抽象查询的创建和操作,但是我看不到他们如何不能抽象数据库。

因此,如果您绝对必须拆分数据库,请实施某种dabatase集群。 否则,查询中的实现表位于同一数据库中,然后将结果连接到symfony中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM