Я довольно новичок в Doctrine2, и я пытаюсь изучить его, просто используя его.Нежелательное условие присоединения с использованием Doctrine2
У меня есть две таблицы, группа и пользователь. Группа может иметь председателя, заместителей председателя и членов. Моя проблема возникает, когда я пытаюсь получить список групп с пользователем в качестве председателя или заместителя председателя. Это моя аннотация заместителя председателя в группе.
/**
* @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));
(вроде) Ожидаемый 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
, но я получаю (сокращенный выбор и переименован псевдонимами)
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
рассмотрен вопрос почему доктрина tr ying для подключения пользователя и группы по их идентификаторам? И как запретить это?