Doctrine:遗留数据库中没有连接表的多对多

时间:2016-04-27 09:39:57

标签: php mysql symfony doctrine-orm

我的问题基本上是this one,只是我使用的是Doctrine 2而不是Hibernate。我给了这个(简化的)DB结构:

PRODUCT                      TABLE_ENTRY
-------                      -----------
ID int primary key           ID int primary key
NAME varchar                 IDX int
GROUPING_CODE varchar(32)    GROUPING_CODE varchar(32)
  • GROUPING_CODE在两个表中都不是唯一的
  • 每个TABLE_ENTRY与n PRODUCTs
  • 相关联

我想将这种关系映射到一个方向,如answer中描述的Hibernate问题:

/**
 * @ORM\OneToMany(targetEntity="Product")
 * @ORM\JoinColumn(name="grouping_code", referencedColumnName="grouping_code")
 */
private $products;

在Doctrine中,这似乎不起作用,因为mappedBy需要“OneToMany”属性。还有另一种方法可以在Doctrine中实现类似的映射吗?只读也是足够的。

1 个答案:

答案 0 :(得分:0)

与此同时,我找到了一个似乎有效的解决方案,在我的情况下可能就足够了:

influxd config > influxdb.generated.conf

基本上,这是使用目标表PRODUCT本身(再次)作为连接表。

这确实感觉像是一个黑客,可能是,但它似乎正在做所需要的。我确信在用于写入数据库时​​它会完全失败。

更新:此解决方案的一个巨大缺点是,数据库架构更新,创建和转储无法正常工作,因为Doctrine抱怨表PRODUCT已经存在。