2012-11-27 185 views
7

我有2個實體,即匹配和團隊。一個團隊可以有一對多的匹配。但是,我的匹配實體const的2個字段引用同一個實體Team。他們是$ homeTeam和$ awayTeam。我如何參考Team,$ matches中的同一個字段作爲雙向關係?Doctrine2映射:2個字段映射到一個字段(ManyToOne)

我現在不工作的代碼如下:

我的比賽實體:

/** 
* @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

我有同樣的問題,但你需要加入與OR條件:homeTeam或AwayTeam,作爲我來說,我需要和條件加盟。 – Dmitriy

回答

7

探索Doctrine's official docs後:您不能添加多個mappedBy列。取而代之的是,你可以選擇之間:

  1. Match創建一個自定義庫,定義方法getAllMatchesForTeam($team)
  2. 確定適當的關係$homeMatchesTeam$awayMatches +方法getAllMatches()$homeMatches工會結果和$awayMatches

更多在這裏閱讀:

  1. https://stackoverflow.com/questions/13922047/symfony2-doctrine2-how-to-implement-methods-on-entity-to-retrieve-related-ent
  2. Custom repository class in Symfony2
  3. Fetching data through a custom repository in a Twig extension
  4. How can I access a service outside of a controller with Symfony2?
+0

謝謝德米特里 – Blyde