具有 MEMBER OF 和空参数的 Doctrine querybuilder

亚历克斯·G

仅当我在参数标签中选择某些内容时,下面的查询才有效,否则返回空结果。如果参数标签为空时没有 where 限制,我该怎么做才能让它工作。在下面的情况下,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 ())
亚历山大·季米特洛夫

大概

if(!empty($tags)){

会做的伎俩。

从您的评论中编辑:在这种情况下:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Doctrine QueryBuilder忽略参数

使用 Doctrine 的具有一对多关系和多个条件的 QueryBuilder

类型为“ Doctrine \ ORM \ QueryBuilder”的预期参数

如何使用QueryBuilder和Doctrine数组类型?

Doctrine 2 DBAL 和 QueryBuilder - 它真的有效吗?

可以在Doctrine的QueryBuilder中进行参数化选择和选择吗?

Laravel-具有join和concat的Querybuilder

Symfony格式错误:“给出了“ Doctrine \ ORM \ QueryBuilder”类型的预期参数,“ Doctrine \ ORM \ Query”已给出”

Symfony 2,QueryBuilder,多个和具有相同参数的Where

SQL 到 Doctrine 的 QueryBuilder 转换

在Doctrine DBAL中重用QueryBuilder

我如何在monfdb doctrine中使用symfony 3.4中的Querybuilder?我有问题我尝试过,但这不提供数据。这是代码和显示页面

具有可空类型的PHP 7.1 Doctrine代理问题

Doctrine querybuilder 不返回与 leftJoin 一对多关系的所有记录

如何将带有子查询的 SQL 查询转换为 Doctrine QueryBuilder 格式?

如何使用教义QueryBuilder将具有额外参数和额外条件的多对多表联接在一起

Doctrine中的自定义QueryBuilder

使用Doctrine querybuilder正确转义LIKE查询

完全不匹配的Doctrine2 QueryBuilder

如何使用Doctrine QueryBuilder删除多个实体

QueryBuilder / Doctrine选择加入分组依据

从Doctrine QueryBuilder中的数组中选择列

doctrine2 querybuilder不之间

有人可以建议使用带有多个“ where”子句的Doctrine(QueryBuilder)进行此查询的方法吗?

教义QueryBuilder查询:具有多个关联

QueryBuilder的Typeorm WHERE子句中的参数有什么问题?

空EntityManager QueryBuilder错误

QueryBuilder:循环中的参数

QueryBuilder和子条件