【发布时间】:2020-05-17 14:42:46
【问题描述】:
仅当我在参数标记中选择某些内容时,下面的查询才有效,否则它会返回空结果。如果参数标签为空时没有位置限制,我该怎么做才能让它工作。在下面的例子中,f.tags 是实体 Student 和实体标签之间的多对多关系字段。
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 查询的 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 ())
【问题讨论】:
标签: symfony doctrine-orm