2

我的项目中有两个数据库。

第一个数据库名为:global
第二个数据库名为:first_db

全局数据库有一个表和Carfirst_db数据库有表Moto和。ItemsBusShip

在帖子下方,您可以看到表格项目的注释。

 * @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在另一个数据库中。如果实体CarMoto使用此方法设置注释,我已经找到了一个 beta 解决方案

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

在更新架构上我没有问题,但它不是很安全。我知道我可以编写本机查询,但我不确定它是最佳方式。

不使用本机查询的一种更好的方法是什么?

4

1 回答 1

0

在 Symfony 的基本设置中,您只使用 1 个数据库,该数据库在 parameters.yml 中定义。使用第二个数据库是可能的,但会使一切变得更加复杂

可以像这样设置使用多个数据库(连接):http: //symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html

但是无法连接来自不同数据库(连接)的不同实体,请参阅此答案:Using Relations with Multiple Entity Managers

我建议您强烈考虑将表合并到一个数据库中,以使您的生活更轻松。

于 2015-04-17T14:20:11.893 回答