[英]Doctrine: Many-to-Many without Join Table on Legacy Database
我的問題基本上是這個問題,只是我使用的是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)
我想在一個方向上映射這種關系,如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本身(再次)作為連接表。
這確實感覺像是一個黑客,可能是,但它似乎正在做所需要的。 不過,我確信在用於寫入數據庫時它會完全失敗。
更新:此解決方案的一個巨大缺點是數據庫架構更新,創建和轉儲將不起作用,因為Doctrine抱怨表PRODUCT已經存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.