我有2个实体,即Match和Team。一个团队可以拥有一对多的匹配。但是,我的Match实体包含两个引用同一实体Team的字段。他们是$ homeTeam和$ awayTeam。如何在Team,$ matches中引用相同的字段作为双向关系?
我目前的非工作代码如下:
我的匹配实体:
/**
* @ORM\Entity
* @ORM\Table(name="match")
**/
class Match {
/**
* @ORM\ManyToOne(targetEntity="Team", inversedBy="matches")
* @ORM\JoinColumn(name="home_team_id", referencedColumnName="id")
* **/
protected $homeTeam;
/**
* @ORM\ManyToOne(targetEntity="Team", inversedBy="matches")
* @ORM\JoinColumn(name="away_team_id", referencedColumnName="id")
* **/
protected $awayTeam;
我的团队实体(我认为不正确?):
/**
* @ORM\Entity
* @ORM\Table(name="team")
* **/
class Team {
/** @ORM\OneToMany(targetEntity="Match", mappedBy="homeTeam", mappedBy="awayTeam") **/
protected $matches;
答案 0 :(得分:9)
浏览Doctrine's official docs后:您无法添加多个mappedBy
列。除此之外,您可以选择:
Match
创建自定义存储库并定义方法getAllMatchesForTeam($team)
$homeMatches
上定义适当的关系$awayMatches
和getAllMatches()
+方法Team
以及$homeMatches
和$awayMatches
的联合结果在这里阅读更多内容: