【发布时间】:2017-05-12 10:30:09
【问题描述】:
我有两个实体:
/**
* @ORM\Entity
* @ORM\Table(name="main")
*/
class Main
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity="Sub", mappedBy="mains")
* @ORM\OrderBy({"position" = "ASC"})
*/
protected $subs;
/**
* @ORM\Column(type="string", length=255)
*/
protected $name;
}
/**
* @ORM\Entity
* @ORM\Table(name="sub")
*/
class Sub
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var \Doctrine\Common\Collections\ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Main", inversedBy="subs")
* @ORM\JoinTable(name="sub_main",
* joinColumns={
* @ORM\JoinColumn(name="sub_id", referencedColumnName="id")
* },
* inverseJoinColumns={
* @ORM\JoinColumn(name="main_id", referencedColumnName="id")
* }
* )
*/
protected $mains;
/**
* @ORM\Column(type="string", length=255)
*/
protected $name;
}
效果很好。在控制器中,我想获取所有具有子(子)的 Mains 对象。
$em = $this->getDoctrine()->getManager();
$queryBuilder = $em->createQueryBuilder();
$qb->select('m, s')
->from('AppBundle:Main', 'm')
->where('ONLY MAINS WITH CHILDRENS (SUB)')
->leftJoin('m.subs', 's')
;
$mains = $qb->getQuery()->getResult();
那么where子句中应该有什么条件呢?
我发现在简单的 SQL 中我可以使用子查询或存在运算符,但我如何在 Symfony 2 的 Doctrine 中使用它?
【问题讨论】: