我正在尝试查询相关对象,但我遇到了一些问题。希望有人可以帮助我。
所以,我有两个ManyToMany
相关实体
用户实体
/**
* @ORM\ManyToMany(targetEntity="Contact", inversedBy="users")
* @ORM\JoinTable(name="users_contacts")
*/
protected $contacts;
和联系实体
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="contacts")
*/
protected $users;
表:Users_contacts 正在关注
User_id **** Contact_id
1 ------------ 1
2 ------------ 1
3 ------------ 2
4 ------------ 2
我正在尝试将user_ids
与查询contact_id
我已经尝试过多个不同的querybuilder
例如:
return $this->createQueryBuilder('u')
->innerJoin('u.contacts', 'c', 'WITH', 'c.id = :$user_id')
->setParameter('user_id', $user_id);
但没有结果,目前我有
$test = $this->getDoctrine()->getRepository('UserBundle:User')->findAll();
树枝
{% for user in test %}
{{ users.id }}
{% endfor %}
哪个让我联系contact_id,但是我如何得到与之相关的user_ids?谢谢你的时间!
答案 0 :(得分:1)
您应该可以通过$user->getContact()
或在twig模板{{ user.contact }}
内访问相关的多对多实体。您可以按照以下步骤操作,而不是单独编写getter:
CREATE TABLE IF NOT EXISTS `mydb`.`user` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`contact` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`user_has_contact` (
`user_id` INT NOT NULL,
`contact_id` INT NOT NULL,
PRIMARY KEY (`user_id`, `contact_id`),
INDEX `fk_user_has_contact_contact1_idx` (`contact_id` ASC),
INDEX `fk_user_has_contact_user_idx` (`user_id` ASC),
CONSTRAINT `fk_user_has_contact_user`
FOREIGN KEY (`user_id`)
REFERENCES `mydb`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_user_has_contact_contact1`
FOREIGN KEY (`contact_id`)
REFERENCES `mydb`.`contact` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;