首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$qb -> expr()-> all

$qb -> expr()-> all
EN

Stack Overflow用户
提问于 2015-07-14 07:54:49
回答 1查看 6.4K关注 0票数 1

我和Symfony2一起工作。我必须列出实体OpeEntetes的最后一个OpeEntetes实体。下面的脚本给出了错误:

区块报价

原则\ORM\Query\QueryException第0行,col 16在“ALL”附近(从中选择: Error: Class‘ALL“未定义。

区块报价

该怎么办?

代码语言:javascript
复制
public function essai1($nbOpe){
        $in = $this->_em->createQueryBuilder()
            ->from('GcRequetesBundle:OpeEntetes','ein')
            ->orderBy('ein.oeNumOpe', 'DESC')
            ->setMaxResults($nbOpe);

$qb = $this->_em->createQueryBuilder();
            $qb
                -> add("select",new Expr\Select(array('res')))
                -> add('from', new Expr\From($qb -> expr()-> all($in -> getDql()), 'res'));
            $query = $qb -> getQuery();
            $result= $query -> getArrayResult();
            return $result;
        }
EN

回答 1

Stack Overflow用户

发布于 2015-07-14 12:25:49

代码中有几个错误:

  • 子查询不支持setMaxResults 启用限值重新定位。子查询上的setMaxResults
  • from字段不支持子查询子查询为从
  • 您可能误解了ALL表达式的含义以及它用于例如,关于所有的MySql文档的含义。

无论如何,子查询不支持setMaxLimits的限制可能意味着您根本无法以这种方式构建代码。如果这不适合您,那么您可以使用下面的代码进行尝试(最简单的方法是只进行一次查询,但我假设您有理由分两个步骤.):

代码语言:javascript
复制
    $in = $em->createQueryBuilder()
        ->select('ein')
        ->from('GcRequetesBundle:OpeEntetes','ein')
        ->orderBy('ein.oeNumOpe', 'DESC')
        ->setMaxResults($nbOpe); // this does not affect the result at all

    $qb = $em->createQueryBuilder();
    $qb->add('select', 'ein2');
    $qb->add('from', 'GcRequetesBundle:OpeEntetes ein2');
    $qb->add('where', $qb->expr()->eq('ein2.id', $qb->expr()->any($in->getDql())));
    $query = $qb -> getQuery();
    $result= $query -> getArrayResult();
    return $result;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31400893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档