如果孩子存在,如何获得



我有两个实体:

/**
 * @ORMEntity
 * @ORMTable(name="main")
 */
class Main
{
    /**
     * @ORMId
     * @ORMColumn(type="integer")
     * @ORMGeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
     * @ORMManyToMany(targetEntity="Sub", mappedBy="mains")
     * @ORMOrderBy({"position" = "ASC"})
     */
    protected $subs;
    /**
     * @ORMColumn(type="string", length=255)
     */
    protected $name;
}
/**
 * @ORMEntity
 * @ORMTable(name="sub")
 */
class Sub
{
    /**
     * @ORMId
     * @ORMColumn(type="integer")
     * @ORMGeneratedValue(strategy="AUTO")
     */
    protected $id;
    /**
    * @var DoctrineCommonCollectionsArrayCollection
    *
    * @ORMManyToMany(targetEntity="Main", inversedBy="subs")
    * @ORMJoinTable(name="sub_main",
    *   joinColumns={
    *     @ORMJoinColumn(name="sub_id", referencedColumnName="id")
    *   },
    *   inverseJoinColumns={
    *     @ORMJoinColumn(name="main_id", referencedColumnName="id")
    *   }
    * )
    */
    protected $mains; 
    /**
     * @ORMColumn(type="string", length=255)
     */
    protected $name;
}

效果很好。在控制器中,我想获取所有具有子项(Sub(的 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();

那么在哪句子句中应该有什么条件呢?

发现在简单的SQL中,我可以使用子查询或运算符存在,但是如何在Symfony 2的Doctrine中使用它呢?

您可以使用

->where('m.subs IS NOT EMPTY');

相关内容

最新更新