La paginación de búsqueda de Codeigniter 4 no está contando y devuelve la página.
Estoy trabajando en un proyecto de búsqueda simple en el que retorno los resultados. La función de búsqueda parece funcionar, sin embargo, el campo de total y página devuelven valores incorrectos. El campo total devuelve el número total de filas dentro de los datos, no el número total de resultados de la búsqueda y la página siempre es {}.
Aquí está el modelo->función que he creado:
public function search($string)
{
$results = $this->select('*')->orLike('title', $string)->orLike('excerpt', $string);
if ( empty( $results ) )
{
return [];
} else
{
$data = [
'results' => $results->paginate(2),
'total' => $results->countAllResults(),
'page' => $this->pager,
];
return $data;
}
}
Lo que es desconcertante es que si coloco el campo total antes del valor de los resultados, el conteo funciona, pero luego el campo de resultados devuelve todo en la base de datos en paginate(2).
davy.ai
El problema con la función de búsqueda es que el campo total devuelve el número total de filas en los datos en lugar del número total de resultados de la búsqueda. Además, la página siempre devuelve {}.
Para solucionar este problema, puedes modificar el código contando los resultados de búsqueda antes de la paginación. Puedes actualizar el código de la siguiente manera:
Este código agrega una nueva variable
$total
que cuenta el total de resultados de búsqueda. Luego,$results
se paginan después de contar los resultados de búsqueda. Además, se utiliza la funcióngetCurrentPage()
para obtener la página actual usando$this->pager
.Con estos cambios, la función de búsqueda ahora debería devolver correctamente el número total de resultados de búsqueda y la página actual.