Я triyng, чтобы понять, как отношения многих и многих взаимодействуют с Doctrine и Symfony2.
Я воссоздал пример, показанный в официальной документации (goo.gl/GYcVE0), и у меня есть два класса сущностей: Пользователь и Группа, как вы можете видеть ниже.
<?php
/** @Entity **/
class User
{
// ...
/**
* @ManyToMany(targetEntity="Group", inversedBy="users")
* @JoinTable(name="users_groups")
**/
private $groups;
public function __construct() {
$this->groups = new \Doctrine\Common\Collections\ArrayCollection();
}
// ...
}
/** @Entity **/
class Group
{
// ...
/**
* @ManyToMany(targetEntity="User", mappedBy="groups")
**/
private $users;
public function __construct() {
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
}
// ...
}
Если я обновляю свою БД, я получаю эту схему MySQL:
CREATE TABLE User (
id INT AUTO_INCREMENT NOT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
CREATE TABLE users_groups (
user_id INT NOT NULL,
group_id INT NOT NULL,
PRIMARY KEY(user_id, group_id)
) ENGINE = InnoDB;
CREATE TABLE Group (
id INT AUTO_INCREMENT NOT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
ALTER TABLE users_groups ADD FOREIGN KEY (user_id) REFERENCES User(id);
ALTER TABLE users_groups ADD FOREIGN KEY (group_id) REFERENCES Group(id);
Проблема заключается в том, что в Symfony2 мне нужна Entity для создания запроса, и в этом случае у меня нет объекта Entity, связанного с таблицей users_group
, потому что эта таблица создается автоматически рамки.
Итак, как я могу получить информацию, связанную с этой таблицей отношений? Например, мне нужно получить всех пользователей в группе, которые являются пользователями, у которых есть идентификатор, который отображается в таблице users_group
.
Как я могу это сделать с помощью DQL, QueryBuilder или других методов?
Большое спасибо.