2017-07-17 33 views
1

Doctrine Paginatorを使用しようとしていますが、クエリでカスタムDB関数を使用しているので、NativeQueryを使用しています。Doctrine Paginator with NativeQuery

しかし、私はこのエラーを取得する:

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

私のコード今のところは、次のとおりです。

$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関数はそのようには動作しません。古い話は私を助けませんでした。

将来的には同じ問題を抱えているかもしれない人のために

答えて

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);