Paginación en cakePHP: Paginator (componente en controladores)

Para poder ver todos los registros de nuestra base de datos con paginación y posibilidad de ordenar, cakePHP nos ofrece el componente 'Paginator'. Para usarlo basta con indicarlo en el controlador:

 public $components = array('Paginator');

Y podemos configurar diferentes opciones:

 public $paginate = array(
        'fields' => array('Post.id', 'Post.created'),
        'limit' => 25,
        'order' => array(
            'Post.title' => 'asc'
        )
    );

Para usarlas lo tendremos que indicar en la acción del controlador:

 public function index() {
 $this->Actor->recursive = 0;
 $this->Paginator->settings = $this->paginate;
 $this->set('actors', $this->Paginator->paginate( );
 }

En el index habitualmente ponemos la opción 'recursive' a 0 para que no nos devuelva los registros relacionados. Si queremos usar las opciones modificadas del paginador lo indicamos en settings. Y para obtener los registros basta con llamar a la función 'paginate'.

También podemos pasar condiciones a la hora de paginar:

 public function index() {
 $this->Actor->recursive = 0;
 $this->Paginator->settings = $this->paginate;
 $this->set('actors', $this->Paginator->paginate( array('first_name LIKE' => 'a%')));
 }

En este caso nos muestra los actores cuyo nombre empieza por 'a'.