带有NativeQuery的Doctrine Paginator

时间:2017-07-17 20:24:40

标签: php doctrine-orm pagination doctrine nativequery

我试图使用Doctrine Paginator,但我已经使用NativeQuery,因为我在查询中使用了自定义数据库功能。

但是我收到了这个错误:

{"angeredoutsidecontrol":"1","difficultiespileup":"2"}

到目前为止我的代码是:

Fatal error: Uncaught Error: Call to undefined method Doctrine\ORM\NativeQuery::getFirstResult()

任何帮助都会很好。我已经尝试过使用QueryBuilder,但我的strip_tags函数并没有以这种方式工作。旧话题无法帮助我。

1 个答案:

答案 0 :(得分:0)

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

我最终解决了这个问题:

在我的模型中,我返回了标准查询结果:

$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 Paginator:

$iteratorAdapter = new \Zend\Paginator\Adapter\ArrayAdapter($result);
$paginator = new \Zend\Paginator\Paginator($iteratorAdapter);
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage(10);