0

私は3つのテーブルを持っています:

  • ゲームcolumns: id | name(例: 1 | ハロー)
  • 所有columns: id | type_id | type_name(例: ウィッシュリストの 1 | 1 |)
  • ユーザーcolumns: id | name(例: 1 | Tomek)

今私が持っているのは、ManyToManyこれらのテーブル間の接続です:

ユーザー(表user_own)

/**
 * @ORM\ManyToMany(targetEntity="Own")
 * @ORM\JoinTable(
 *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="type_id", referencedColumnName="id")}
 * )
 */

所有(テーブルown_game)

/**
 * @ORM\ManyToMany(targetEntity="Game")
 * @ORM\JoinTable(
 *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="game_id", referencedColumnName="id")}
 * )
 */

私のクエリ:

public function getOwned() {
        return $this->getEntityManager()
            ->createQuery('
                SELECT u, o, g FROM AcmeGoBundle:User u
                JOIN u.owners o
                JOIN u.games g
            ')
            ->getResult();
    }

特定のユーザーが所有するゲームを取得できますが、所有権の種類を関連付けることができません。これどうやってするの?

4

1 に答える 1

1

いくつManyToManyかのデータを含む追加の列を作成するには、これを手動で作成する必要があります。

DoctrineManyToManyリレーションは、結合されたエンティティの ID を持つ結合テーブルを作成します。したがって、ex という名前の独自のエンティティで作成する必要があります。UserOwnsとのOneToMany関係Userと別のOneToMany関係Own。次に、データを内部に含むフィールドを追加できます。

その質問を確認してください: Doctrine2: 参照テーブルに余分な列がある多対多を処理する最良の方法

于 2013-01-04T12:45:58.727 に答える