I have 2 entities, namely Match and Team. A Team can have one to many Matches. However, my Match entity consts of 2 fields which reference the same entity, Team. They are $homeTeam and $awayTeam. How do I reference the same field in Team, $matches, as a Bidirectional relationship?
My current non-working code is below:
My Match Entity:
/**
* @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;
My Team Entity (incorrect I would presume?):
/**
* @ORM\Entity
* @ORM\Table(name="team")
* **/
class Team {
/** @ORM\OneToMany(targetEntity="Match", mappedBy="homeTeam", mappedBy="awayTeam") **/
protected $matches;
After exploring Doctrine's official docs: you can't add multiple
mappedBy
columns. Instead of this, you can choose between:Match
and define methodgetAllMatchesForTeam($team)
$homeMatches
and$awayMatches
+ methodgetAllMatches()
onTeam
and union results of$homeMatches
and$awayMatches
thereRead more here: