簡體   English   中英

如果孩子存在,如何獲得

[英]How to get if children exists

我有兩個實體:

/**
 * @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;
}

它運作良好。 在控制器中我想獲得所有具有子(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();

那么where子句應該是什么條件?

我發現在簡單的SQL中我可以使用子查詢或運算符存在,但是如何在Symfony 2中的Doctrine中使用它?

你可以使用->where('m.subs IS NOT EMPTY');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM