我需要在Symfony2中为应用程序保留一个存档数据库。
在其中,我将保留所有超过90天的记录。我当时以为我只能使用一个实体管理器(因为两个数据库是相同的)。

首先,我不确定这是否是最好的方法/解决方案。
而且,除此之外,我不知道如何实现这个想法(我刚刚发现2个数据库的2个实体管理器)。

如果这是一个愚蠢的问题,很抱歉,但是我已经为它寻求解决方案已有2天了。

最佳答案

这是不可能的,每个实体管理器只能使用一个数据库连接the docs seem quite clear about it

因此,我认为您将不得不使用两个EM。每个都将配置有一组重复的映射。但是,如何使用它们的细节取决于您:

  • 您可以根据需要在应用程序中手动选择一个或另一个
  • 您可以以某种方式将其抽象到自己的同时具有两个EM的类中,然后在运行查询等时,将担心从哪里获取数据(以及可能如何从两个EM组合数据)
  • 如果真正需要两个EM的唯一活动是归档过程本身,那么很显然,将它隐藏在一个类中很显然

  • 我想这还取决于归档数据库的意义。如果是某种架构性的东西,例如它需要在不同的服务器上或其他任何东西上,那么您就陷入了上述困境。另一方面,如果您真的只是希望旧数据不显示在日常查询中(没有特别要求),那么最好实现某种“存档”标志和一个Doctrine Extension,神奇地将存档的项目隐藏起来,直到您要它们为止,与SoftDeleteable非常相似

    10-01 10:28
    查看更多