我的ERM /数据库中有以下表格:
卡,展开和 card_expansion
ManyToMany
- 卡与扩展之间的关系。一张卡可以进行多次扩展,扩展可以容纳许多卡。
集合
描述需要扩展的卡数。扩展B的卡A需要3次。因此OneToMany
与card_expansion
有card_expansion
的关系。
我想使用Doctrine在我的Entities-objects中映射这些关系。卡和扩展之间的映射是没有问题的。
但由于Collection
表并未由实体直接映射,因此我不知道如何从我的Expansion
实体访问它或我必须使用哪个注释来构建正确连接...
我需要映射什么才能使其正常工作?
这是我的/**
* @Entity
* @Table(name="expansion")
*/
class Expansion {
...
/**
* @ManyToMany(targetEntity="Card")
* @JoinTable(name="card_expansion",
* joinColumns={@JoinColumn(name="_expansion", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="_card", referencedColumnName="id", unique=true)})
*/
private $cards;
public function __construct () {
$this->cards = new ArrayCollection();
}
实体的代码:
Collection
这是我的/**
* @Entity
* @Table(name="collection")
*/
class Collection{
/**
* @OneToMany(targetEntity="???")
* @JoinTable(name="card_in_expansion")
*/
private $card_in_expansion;
实体
string request_url =
"https://www.tumblr.com/oauth/access_token" + "?" +
"oauth_consumer_key=" + oauth_consumer_key + "&" +
"oauth_token=" + main_oauth_token + "&" +
"oauth_signature_method=" + "HMAC-SHA1" + "&" +
"oauth_signature=" + Uri.EscapeDataString(oauth_signature) + "&" +
"oauth_timestamp=" + oauth_timestamp + "&" +
"oauth_nonce=" + oauth_nonce + "&" +
"oauth_version=" + "1.0" + "&" +
"oauth_verifier=" + oauth_verifier;
HttpClient httpClient = new HttpClient();
string responseBodyAsText = await httpClient.GetStringAsync(request_url);
答案 0 :(得分:1)
您可以将Card
和Expension
之间的关系设置为实体CardExpension
。然后,您就可以在模型中使用它了。
而不是遵循:
Card
- ManyToMany - Expension
你会得到:
Card
- OneToMany - CardExpension
- ManyToOne - Expension
另请阅读here in the Doctrine 2 documentation:
因此,直接的多对多关联消失,并被3个参与类之间的一对多/多对一关联所取代。