8

Match と Team という 2 つのエンティティがあります。チームは 1 つから複数のマッチを持つことができます。ただし、私の Match エンティティは、同じエンティティであるチームを参照する 2 つのフィールドで構成されています。彼らは $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;
4

1 に答える 1

9

Doctrine の公式ドキュメントを調べた後: 複数のmappedBy列を追加することはできません。これの代わりに、次のいずれかを選択できます。

  1. のカスタム リポジトリを作成し、Matchメソッドを定義するgetAllMatchesForTeam($team)
  2. $homeMatches適切なリレーションと$awayMatches+ メソッドgetAllMatches()を定義し、 and thereTeamの結果を結合します。$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 を使用してコントローラの外部にあるサービスにアクセスするにはどうすればよいですか?
于 2012-12-18T07:00:55.887 に答える