Отображение Doctrine2: 2 поля, сопоставленные одному полю (ManyToOne)

У меня есть 2 объекта, а именно Match and Team. Команда может иметь один-много матчей. Тем не менее, my Match entity consts состоит из 2 полей, которые ссылаются на один и тот же объект Team. Это $ homeTeam и $ awayTeam. Как мне ссылаться на одно и то же поле в командах, $ match, как на двунаправленное отношение?

Мой текущий нерабочий код приведен ниже:

Моя организация:

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

mappedBy официальные документы Doctrine : вы не можете добавить несколько столбцов mappedBy . Вместо этого вы можете выбирать между:

  1. Создайте собственный репозиторий для Match и определите метод getAllMatchesForTeam($team)
  2. Определите соответствующие отношения $homeMatches и $awayMatches + метод getAllMatches() для результатов Team и объединения $homeMatches и $awayMatches там

Подробнее здесь:

  1. https://stackoverflow.com/questions/13922047/symfony2-doctrine2-how-to-implement-methods-on-entity-to-retrieve-related-ent
  2. Пользовательский класс репозитория в Symfony2
  3. Получение данных через пользовательский репозиторий в расширении Twig
  4. Как я могу получить доступ к службе за пределами контроллера с помощью Symfony2?