首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NativeQuery的原则分页器

使用NativeQuery的原则分页器
EN

Stack Overflow用户
提问于 2017-07-18 04:24:40
回答 1查看 862关注 0票数 2

我正在尝试使用Doctrine Paginator,但是我不得不使用NativeQuery,因为我在查询中使用了一个自定义的DB函数。

但是我得到了这个错误:

代码语言:javascript
复制
Fatal error: Uncaught Error: Call to undefined method Doctrine\ORM\NativeQuery::getFirstResult()

到目前为止我的代码是:

代码语言:javascript
复制
$sql = "SELECT std_modulos_aulas.idaula, std_modulos_aulas.idmodulo, conteudo, std_modulos_aulas.titulo
            FROM  uov.std_modulos_aulas
            INNER JOIN uov.std_modulos ON std_modulos_aulas.idmodulo = std_modulos.idmodulo
            INNER JOIN uov.std_cursos ON std_cursos.idcurso = std_modulos.idcurso
            WHERE std_modulos.publicar = 's' AND std_modulos.excluido = 'n' AND std_modulos_aulas.publicar = 's' AND std_cursos.idcurso = ".$curso." AND academico.strip_tags(LOWER(std_modulos_aulas.conteudo)) LIKE '".$termo."'
            ORDER BY std_modulos.ordem ASC, std_modulos_aulas ASC";

$rsm = new ResultSetMapping;

$rsm->addScalarResult('idaula', 'idaula');
$rsm->addScalarResult('idmodulo', 'idmodulo');
$rsm->addScalarResult('conteudo', 'conteudo');
$rsm->addScalarResult('titulo', 'titulo');

$query = $this->em->createNativeQuery($sql, $rsm);

return new Paginator($query, $fetchJoinCollection = false);

任何帮助都会很好。我已经尝试过使用QueryBuilder,但是我的strip_tags函数不能以这种方式工作。老话题帮不了我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-01 22:53:50

对于那些将来可能会遇到同样问题的人:

我最终通过以下方式解决了这个问题:

在my Model中,我返回了一个标准查询结果:

代码语言:javascript
复制
$sql = "SELECT std_modulos_aulas.idaula, std_modulos_aulas.idmodulo, conteudo, std_modulos_aulas.titulo
        FROM  uov.std_modulos_aulas
        INNER JOIN uov.std_modulos ON std_modulos_aulas.idmodulo = std_modulos.idmodulo
        INNER JOIN uov.std_cursos ON std_cursos.idcurso = std_modulos.idcurso
        WHERE std_modulos.publicar = 's' AND std_modulos.excluido = 'n' AND std_modulos_aulas.publicar = 's' AND std_cursos.idcurso = ".$curso." AND academico.strip_tags(LOWER(std_modulos_aulas.conteudo)) LIKE '".$termo."'
        ORDER BY std_modulos.ordem ASC, std_modulos_aulas ASC";

$rsm = new ResultSetMapping;

$rsm->addScalarResult('idaula', 'idaula');
$rsm->addScalarResult('idmodulo', 'idmodulo');
$rsm->addScalarResult('conteudo', 'conteudo');
$rsm->addScalarResult('titulo', 'titulo');

$query = $this->em->createNativeQuery($sql, $rsm);
return $query->execute();

然后,在我的控制器中,我使用了Zend分页器:

代码语言:javascript
复制
$iteratorAdapter = new \Zend\Paginator\Adapter\ArrayAdapter($result);
$paginator = new \Zend\Paginator\Paginator($iteratorAdapter);
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage(10);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45153070

复制
相关文章

相似问题

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