Skip to content

Phalcon paginator

NOTE

All classes are prefixed with Phalcon

Paginator\Adapter\AbstractAdapter

Abstract Source on GitHub

Phalcon\Paginator\Adapter\AbstractAdapter

Uses Phalcon\Paginator\Exception · Phalcon\Paginator\Exceptions\InvalidLimit · Phalcon\Paginator\Repository · Phalcon\Paginator\RepositoryInterface

Method Summary

Properties

protected array $config Configuration of paginator
protected int|null $limitRows = null Number of rows to show in the paginator. By default is null
protected int|null $page = null Current page in paginate
protected RepositoryInterface $repository Repository for pagination

Methods

Public · 5

__construct()

public function __construct( array $config );

Phalcon\Paginator\Adapter\AbstractAdapter constructor

getLimit()

public function getLimit(): int;

Get current rows limit

setCurrentPage()

public function setCurrentPage( int $page ): AdapterInterface;

Set the current page number

setLimit()

public function setLimit( int $limit ): AdapterInterface;

Set current rows limit

setRepository()

public function setRepository( RepositoryInterface $repository ): AdapterInterface;

Sets current repository for pagination

Protected · 1

getRepository()

protected function getRepository( array $properties = null ): RepositoryInterface;

Gets current repository for pagination

Paginator\Adapter\AdapterInterface

Interface Source on GitHub

@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Paginator\Adapter} instead.

Uses Phalcon\Contracts\Paginator\Adapter

Paginator\Adapter\Model

Class Source on GitHub

Phalcon\Paginator\Adapter\Model

This adapter allows to paginate data using a Phalcon\Mvc\Model resultset as a base.

use Phalcon\Paginator\Adapter\Model;

$paginator = new Model(
    [
        "model" => Robots::class,
        "limit" => 25,
        "page"  => $currentPage,
    ]
);

$paginator = new Model(
    [
        "model" => Robots::class,
        "parameters" => [
             "columns" => "id, name"
        ],
        "limit" => 12,
        "page"  => $currentPage,
    ]
);

$paginator = new Model(
    [
        "model" => Robots::class,
        "parameters" => [
             "type = :type:",
             "bind" => [
                 "type" => "mechanical"
             ],
             "order" => "name"
        ],
        "limit" => 16,
        "page"  => $currentPage,
    ]
);

$paginator = new Model(
    [
        "model" => Robots::class,
        "parameters" => "(id % 2) = 0",
        "limit" => 8,
        "page"  => $currentPage,
    ]
);

$paginator = new Model(
    [
        "model" => Robots::class,
        "parameters" => [ "(id % 2) = 0" ],
        "limit" => 8,
        "page"  => $currentPage,
    ]
);

$paginate = $paginator->paginate();

Uses Phalcon\Mvc\ModelInterface · Phalcon\Mvc\Model\ResultsetInterface · Phalcon\Paginator\Exception · Phalcon\Paginator\RepositoryInterface

Method Summary

Methods

Public · 1

paginate()

public function paginate(): RepositoryInterface;

Returns a slice of the resultset to show in the pagination

Paginator\Adapter\NativeArray

Class Source on GitHub

Phalcon\Paginator\Adapter\NativeArray

Pagination using a PHP array as source of data

use Phalcon\Paginator\Adapter\NativeArray;

$paginator = new NativeArray(
    [
        "data"  => [
            ["id" => 1, "name" => "Artichoke"],
            ["id" => 2, "name" => "Carrots"],
            ["id" => 3, "name" => "Beet"],
            ["id" => 4, "name" => "Lettuce"],
            ["id" => 5, "name" => ""],
        ],
        "limit" => 2,
        "page"  => $currentPage,
    ]
);

Uses Phalcon\Paginator\Exception · Phalcon\Paginator\Exceptions\PaginatorDataNotArray · Phalcon\Paginator\RepositoryInterface

Method Summary

Methods

Public · 1

paginate()

public function paginate(): RepositoryInterface;

Returns a slice of the resultset to show in the pagination

Paginator\Adapter\QueryBuilder

Class Source on GitHub

Phalcon\Paginator\Adapter\QueryBuilder

Pagination using a PHQL query builder as source of data

use Phalcon\Paginator\Adapter\QueryBuilder;

$builder = $this->modelsManager->createBuilder()
                ->columns("id, name")
                ->from(Robots::class)
                ->orderBy("name");

$paginator = new QueryBuilder(
    [
        "builder" => $builder,
        "limit"   => 20,
        "page"    => 1,
    ]
);

Uses Phalcon\Db\Enum · Phalcon\Mvc\Model\Query\Builder · Phalcon\Paginator\Exception · Phalcon\Paginator\Exceptions\BuilderModelNotDefined · Phalcon\Paginator\Exceptions\InvalidBuilderInstance · Phalcon\Paginator\Exceptions\MissingColumnsForHaving · Phalcon\Paginator\Exceptions\MissingRequiredParameter · Phalcon\Paginator\RepositoryInterface

Method Summary

Properties

protected Builder $builder Paginator's data
protected array|string $columns Columns for count query if builder has having or group by

Methods

Public · 5

__construct()

public function __construct( array $config );

Phalcon\Paginator\Adapter\QueryBuilder

getCurrentPage()

public function getCurrentPage(): int;

Get the current page number

getQueryBuilder()

public function getQueryBuilder(): Builder;

Get query builder object

paginate()

public function paginate(): RepositoryInterface;

Returns a slice of the resultset to show in the pagination

setQueryBuilder()

public function setQueryBuilder( Builder $builder ): static;

Set query builder object

Paginator\Adapter\QueryBuilderCursor

Class Source on GitHub

Phalcon\Paginator\Adapter\QueryBuilderCursor

Cursor-based (keyset) pagination using a PHQL query builder as source of data.

Unlike offset pagination, this adapter does not use an ever-growing OFFSET. It appends a WHERE condition on a unique, indexed cursor column so that each page is an O(1) index seek regardless of depth.

Limitations: - No total count: getTotalItems() always returns 0. - No random access: getLast() always returns 0. Pages must be traversed in order by following the cursor value returned in getNext(). - The cursor column must be unique and indexed (e.g. a primary key). - Items are returned as an array of associative arrays (via Resultset::toArray()), not as model objects. - cursorColumn must match the PHQL-accessible column name exactly (e.g. "inv_id").

use Phalcon\Paginator\Adapter\QueryBuilderCursor;

$builder = $this->modelsManager->createBuilder()
                ->columns("inv_id, inv_title")
                ->from(Invoices::class)
                ->orderBy("inv_id");

$paginator = new QueryBuilderCursor(
    [
        "builder"      => $builder,
        "limit"        => 20,
        "cursorColumn" => "inv_id",
        "cursor"       => null,  // first page; pass $page->getNext() for subsequent pages
    ]
);

$page = $paginator->paginate();
// $page->getItems()   - array of rows for this page
// $page->getNext()    - cursor value to pass for the next page (0 means no more pages)
// $page->getCurrent() - cursor value used for this page (0 on first page)

Uses Phalcon\Mvc\Model\Query\Builder · Phalcon\Paginator\Exception · Phalcon\Paginator\Exceptions\InvalidBuilderInstance · Phalcon\Paginator\Exceptions\InvalidCursorColumn · Phalcon\Paginator\Exceptions\MissingRequiredParameter · Phalcon\Paginator\RepositoryInterface

Method Summary

Properties

protected Builder $builder Paginator's data
protected mixed $cursor = null The cursor value for the current page (null = first page)
protected string $cursorColumn The column used as the cursor (must be unique and indexed)

Methods

Public · 8

__construct()

public function __construct( array $config );

Phalcon\Paginator\Adapter\QueryBuilderCursor

getCurrentPage()

public function getCurrentPage(): int;

Get the current page number

Returns the cursor value used for this page cast to int, or 0 for the first page. Use getCursor() to retrieve the raw cursor value.

getCursor()

public function getCursor(): mixed;

Get the cursor value for the current page (null on first page)

getCursorColumn()

public function getCursorColumn(): string;

Get the cursor column name

getQueryBuilder()

public function getQueryBuilder(): Builder;

Get query builder object

paginate()

public function paginate(): RepositoryInterface;

Returns a slice of the resultset to show in the pagination

Fetches limit + 1 rows from the builder. If the extra row is present a next page exists; it is discarded and the cursor value of the last included row is stored in the next repository property.

setCursor()

public function setCursor( mixed $cursor ): static;

Set the cursor value for the next paginate() call

Pass the value returned by Repository::getNext() to advance to the next page, or null to restart from the first page.

setQueryBuilder()

public function setQueryBuilder( Builder $builder ): static;

Set query builder object

Paginator\Exception

Class Source on GitHub

Phalcon\Paginator\Exception

Exceptions thrown in Phalcon\Paginator will use this class

Paginator\Exceptions\BuilderModelNotDefined

Class Source on GitHub

This file is part of the Phalcon Framework.

(c) Phalcon Team team@phalcon.io

For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.

Uses Phalcon\Paginator\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Paginator\Exceptions\InvalidBuilderInstance

Class Source on GitHub

This file is part of the Phalcon Framework.

(c) Phalcon Team team@phalcon.io

For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.

Uses Phalcon\Paginator\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Paginator\Exceptions\InvalidCursorColumn

Class Source on GitHub

This file is part of the Phalcon Framework.

(c) Phalcon Team team@phalcon.io

For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.

Uses Phalcon\Paginator\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Paginator\Exceptions\InvalidLimit

Class Source on GitHub

This file is part of the Phalcon Framework.

(c) Phalcon Team team@phalcon.io

For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.

Uses Phalcon\Paginator\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Paginator\Exceptions\MissingColumnsForHaving

Class Source on GitHub

This file is part of the Phalcon Framework.

(c) Phalcon Team team@phalcon.io

For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.

Uses Phalcon\Paginator\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Paginator\Exceptions\MissingRequiredParameter

Class Source on GitHub

This file is part of the Phalcon Framework.

(c) Phalcon Team team@phalcon.io

For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.

Uses Phalcon\Paginator\Exception

Method Summary

Methods

Public · 2

__construct()

public function __construct( string $parameter );

getParameter()

public function getParameter(): string;

Paginator\Exceptions\PaginatorDataNotArray

Class Source on GitHub

This file is part of the Phalcon Framework.

(c) Phalcon Team team@phalcon.io

For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.

Uses Phalcon\Paginator\Exception

Method Summary

Methods

Public · 1

__construct()

public function __construct();

Paginator\PaginatorFactory

Class Source on GitHub

This file is part of the Phalcon Framework.

(c) Phalcon Team team@phalcon.io

For the full copyright and license information, please view the LICENSE.txt file that was distributed with this source code.

Uses Phalcon\Factory\AbstractFactory · Phalcon\Paginator\Adapter\AdapterInterface

Method Summary

Methods

Public · 3

__construct()

public function __construct( array $services = [] );

AdapterFactory constructor.

load()

public function load( mixed $config ): AdapterInterface;

Factory to create an instance from a Config object

use Phalcon\Paginator\PaginatorFactory;

$builder = $this
     ->modelsManager
     ->createBuilder()
     ->columns("id, name")
     ->from(Robots::class)
     ->orderBy("name");

$options = [
    "builder" => $builder,
    "limit"   => 20,
    "page"    => 1,
    "adapter" => "queryBuilder",
];

$paginator = (new PaginatorFactory())->load($options);

newInstance()

public function newInstance(
    string $name,
    array $options = []
): AdapterInterface;

Create a new instance of the adapter

Protected · 2

getExceptionClass()

protected function getExceptionClass(): string;

getServices()

protected function getServices(): array;

Returns the available adapters

Paginator\Repository

Class Source on GitHub

Phalcon\Paginator\Repository

Repository of current state Phalcon\Paginator\AdapterInterface::paginate()

Uses JsonSerializable

Method Summary

Properties

protected array $aliases = []
protected array $properties = []

Methods

Public · 13

__get()

public function __get( string $property ): mixed|null;

{@inheritdoc}

getAliases()

public function getAliases(): array;

{@inheritdoc}

getCurrent()

public function getCurrent(): int;

{@inheritdoc}

getFirst()

public function getFirst(): int;

{@inheritdoc}

getItems()

public function getItems(): mixed;

{@inheritdoc}

getLast()

public function getLast(): int;

{@inheritdoc}

getLimit()

public function getLimit(): int;

{@inheritdoc}

getNext()

public function getNext(): int;

{@inheritdoc}

getPrevious()

public function getPrevious(): int;

{@inheritdoc}

getTotalItems()

public function getTotalItems(): int;

{@inheritdoc}

jsonSerialize()

public function jsonSerialize(): array;

See jsonSerialize

setAliases()

public function setAliases( array $aliases ): RepositoryInterface;

{@inheritdoc}

setProperties()

public function setProperties( array $properties ): RepositoryInterface;

{@inheritdoc}

Protected · 2

getProperty()

protected function getProperty(
    string $property,
    mixed $defaultValue = null
): mixed;

Gets value of property by name

getRealNameProperty()

protected function getRealNameProperty( string $property ): string;

Resolve alias property name

Paginator\RepositoryInterface

Interface Source on GitHub

@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Paginator\Repository} instead.

Uses Phalcon\Contracts\Paginator\Repository