【问题标题】:How to get if children exists如果孩子存在如何获得
【发布时间】: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 中使用它?

【问题讨论】:

    标签: php sql symfony doctrine


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-04-28
      • 2021-12-14
      • 2018-04-02
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多