0
私はDoctrine2の新機能を使用しています。Doctrine2を使用した不要な結合条件
私は2つのテーブル、グループとユーザーを持っています。グループには会長、副会長、メンバーが参加することができます。私の問題は、私が議長または副会長としてユーザーとグループのリストを取得しようとするときに発生します。これは、グループエンティティの副会長の注釈です。
/**
* @var string
*
* @ORM\ManyToMany(targetEntity="User")
* @ORM\JoinTable(name="vicechairmen",
* joinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}
*)
*/
private $vicechairmen;
クエリビルダ
$qry = $this->entManager->getRepository("Entities\Local\Group")->createQueryBuilder("g");
$qry->leftJoin("g.vicechairmen", "gv", "WITH", "gv.id = g.id");
$qry->where($qry->expr()->eq('g.chairman', $id))->orWhere($qry->expr()->eq('gv.id', $id));
SELECT g.id FROM `group` g
LEFT JOIN vicechairmen vg ON g.id = vg.group_id
LEFT JOIN user u ON u.id = vg.user_id AND u.id = g.id
WHERE g.chairman_id = 4 OR u.id = 4
質問
(ちょっと)期待SQLクエリは
SELECT g.id FROM `group` g
LEFT JOIN vicechairmen vg ON g.id = vg.group_id
LEFT JOIN user u ON u.id = vg.user_id
WHERE g.chairman_id = 4 OR u.id = 4
だろうが、私は(別名を選択短縮と改称)を取得なぜdoctrine trですユーザーとグループをIDで接続するにはどうすればいいですか?そしてそれを禁止する方法?