私は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();
}
特定のユーザーが所有するゲームを取得できますが、所有権の種類を関連付けることができません。これどうやってするの?