我的项目中有两个数据库。
第一个名为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")
在更新架构上我没有问题,但它不是很安全。我知道我可以编写本机查询,但我不确定它是最佳方式。
在不使用原生查询的情况下,更好的方法是什么?
答案 0 :(得分:0)
在Symfony的基本设置中,您只使用1个数据库,该数据库在parameters.yml中定义。使用第二个数据库是可能的,但会使一切变得更加复杂
使用多个数据库(连接)可以这样设置:http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html
但是无法连接不同数据库(连接)中的不同实体,请参阅以下答案:Using Relationships with Multiple Entity Managers
我建议您强烈关注将表格合并到一个数据库中,以使您的生活更轻松。