Doctrine2映射:映射到一个字段的2个字段(ManyToOne)

Bly*_*yde 8 php orm doctrine-orm

我有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;
Run Code Online (Sandbox Code Playgroud)

我的团队实体(我猜错了吗?):

/**
 * @ORM\Entity
 * @ORM\Table(name="team")
 * **/
class Team {

    /** @ORM\OneToMany(targetEntity="Match", mappedBy="homeTeam", mappedBy="awayTeam") **/
    protected $matches;
Run Code Online (Sandbox Code Playgroud)

Dmi*_*riy 9

在探索Doctrine的官方文档后:您无法添加多个mappedBy列.除此之外,您可以选择:

  1. 为其创建自定义存储库Match并定义方法getAllMatchesForTeam($team)
  2. 定义适当的关系$homeMatches$awayMatches+方法getAllMatches()Team和工会的结果$homeMatches$awayMatches

在这里阅读更多:

  1. /sf/ask/974543321/
  2. Symfony2中的自定义存储库类
  3. 通过Twig扩展中的自定义存储库获取数据
  4. 如何使用Symfony2访问控制器外部的服务?