gpt4 book ai didi

php - 学说 : Many-to-Many without Join Table on Legacy Database

转载 作者:行者123 更新时间:2023-11-30 22:20:07 25 4
gpt4 key购买 nike

我的问题本质上是 this one ,只有我使用 Doctrine 2 而不是 Hibernate。我得到了这个(简化的)数据库结构:

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 个产品相关联

我想在一个方向上映射这种关系,如 answer 中所述说 Hibernate 问题:

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

在 Doctrine 中这似乎不起作用,因为 OneToMany 需要“mappedBy”属性。有没有其他方法可以在 Doctrine 中实现类似的映射?只读也足够了。

最佳答案

与此同时,我找到了一个似乎有效并且对我来说可能足够的解决方案:

/**
* @ORM\ManyToMany(targetEntity="Product")
* @ORM\JoinTable(name="product",
* joinColumns={
* @ORM\JoinColumn(name="grouping_code", referencedColumnName="grouping_code")},
* inverseJoinColumns={
* @ORM\JoinColumn(name="id", referencedColumnName="id")}
* )
*/
private $products;

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

这确实感觉像是一个 hack,而且可能确实如此,但它似乎正在做所需的事情。不过,我确信它在写入数据库时​​会完全失败。

更新:此解决方案的一个巨大缺点是数据库架构更新、创建和转储将不起作用,因为 Doctrine 提示表 PRODUCT 已经存在。

关于php - 学说 : Many-to-Many without Join Table on Legacy Database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36885983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com