2017-07-17 1 views
1

Ich versuche, Doctrine Paginator verwenden, aber ich habe NativeQuery verwenden, da ich eine benutzerdefinierte DB-Funktion in meiner Abfrage verwenden.Doctrine Paginator mit NativeQuery

Aber ich bekomme diese Fehlermeldung:

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

Mein Code so weit ist:

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

Jede Hilfe wäre schön. Ich habe bereits versucht, mit QueryBuilder, aber meine strip_tags Funktion funktioniert nicht auf diese Weise. Die alten Themen konnten mir nicht helfen.

Antwort

0

Für diejenigen, die das gleiche Problem in der Zukunft haben könnte:

Bei meinem Modell, kehrte ich eine Standardabfrageergebnis:

ich dies durch Lösen endete

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

Und Dann benutzte ich bei meinem Controller einen Zend-Paginator:

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