具有 MEMBER OF 和空参数的 Doctrine querybuilder

Doctrine querybuilder with MEMBER OF and empty parameter

下面的查询仅在我 select 参数标记中的内容时有效,否则它 return 为空结果。当参数标签为空时,我该怎么做才能让它像没有 where 限制一样工作。在下面的例子中,f.tags 是实体 Student 和实体 Tags 之间的多对多关系字段。

public function FindStudent($tags)
{
    $qb = $this
        ->createQueryBuilder('s');

    if ($tags) {
        $qb->andWhere(':tag MEMBER OF s.tags')
            ->setParameter('tag', $tags);
    }

    $qb->Select('s');

    return $qb
        ->getQuery()
        ->getResult();
}

在探查器 Doctrine 查询中,当没有 selected 时,IN 为空。我想做的是当参数标签为空时完全没有 INNER JOIN 和 WHERE IN。

AND EXISTS (SELECT 1 FROM student_tag f3_ INNER JOIN tag s4_ ON f3_.tag_id = s4_.id WHERE f3_.student_id = f0_.id AND s4_.id IN ())

可能

if(!empty($tags)){

会成功的。

根据您的评论进行编辑: 在那种情况下:

use Doctrine\Common\Collections\ArrayCollection;
....
if(!empty($tags) && ($tags instanceof ArrayCollection && !$tags->empty())){