Paginator\Adapter\AbstractAdapter
AbstractSource on GitHubPhalcon\Paginator\Adapter\AbstractAdapter
Phalcon\Paginator\Adapter\AbstractAdapter- implementsPhalcon\Paginator\Adapter\AdapterInterface
Uses Phalcon\Paginator\Exception · Phalcon\Paginator\Exceptions\InvalidLimit · Phalcon\Paginator\Exceptions\MissingRequiredParameter · Phalcon\Paginator\Repository · Phalcon\Paginator\RepositoryInterface
Method Summary
public__construct( array$config )Phalcon\Paginator\Adapter\AbstractAdapter constructorpublicintgetLimit()Get current rows limitpublicAdapterInterfacesetCurrentPage( int$page )Set the current page numberpublicAdapterInterfacesetLimit( int$limit )Set current rows limitpublicAdapterInterfacesetRepository( RepositoryInterface$repository )Sets current repository for paginationprotectedRepositoryInterfacegetRepository( array$properties = null )Gets current repository for paginationProperties
protectedarray$configConfiguration of paginatorprotectedint|null$limitRows = nullNumber of rows to show in the paginator. By default is nullprotectedint|null$page = nullCurrent page in paginateprotectedRepositoryInterface$repositoryRepository for paginationMethods
__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
getRepository()
protected function getRepository( array $properties = null ): RepositoryInterface;Gets current repository for pagination
Paginator\Adapter\AdapterInterface
InterfaceSource on GitHubPhalcon\Contracts\Paginator\AdapterPhalcon\Paginator\Adapter\AdapterInterface
Uses Phalcon\Contracts\Paginator\Adapter
Paginator\Adapter\Model
ClassSource on GitHubPhalcon\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" => Invoices::class,
"limit" => 25,
"page" => $currentPage,
]
);
$paginator = new Model(
[
"model" => Invoices::class,
"parameters" => [
"columns" => "inv_id, inv_title"
],
"limit" => 12,
"page" => $currentPage,
]
);
$paginator = new Model(
[
"model" => Invoices::class,
"parameters" => [
"inv_status_flag = :flag:",
"bind" => [
"flag" => 1
],
"order" => "inv_title"
],
"limit" => 16,
"page" => $currentPage,
]
);
$paginator = new Model(
[
"model" => Invoices::class,
"parameters" => "(inv_id % 2) = 0",
"limit" => 8,
"page" => $currentPage,
]
);
$paginator = new Model(
[
"model" => Invoices::class,
"parameters" => [ "(inv_id % 2) = 0" ],
"limit" => 8,
"page" => $currentPage,
]
);
$paginate = $paginator->paginate();Phalcon\Paginator\Adapter\AbstractAdapterPhalcon\Paginator\Adapter\Model
Uses Phalcon\Mvc\ModelInterface · Phalcon\Mvc\Model\ResultsetInterface · Phalcon\Paginator\Exception · Phalcon\Paginator\Exceptions\MissingRequiredParameter · Phalcon\Paginator\RepositoryInterface
Method Summary
public__construct( array$config )Phalcon\Paginator\Adapter\Model constructorpublicRepositoryInterfacepaginate()Returns a slice of the resultset to show in the paginationMethods
__construct()
public function __construct( array $config );Phalcon\Paginator\Adapter\Model constructor
paginate()
public function paginate(): RepositoryInterface;Returns a slice of the resultset to show in the pagination
Paginator\Adapter\NativeArray
ClassSource on GitHubPhalcon\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,
]
);Phalcon\Paginator\Adapter\AbstractAdapterPhalcon\Paginator\Adapter\NativeArray
Uses Phalcon\Paginator\Exception · Phalcon\Paginator\Exceptions\PaginatorDataNotArray · Phalcon\Paginator\RepositoryInterface
Method Summary
Methods
paginate()
public function paginate(): RepositoryInterface;Returns a slice of the resultset to show in the pagination
Paginator\Adapter\QueryBuilder
ClassSource on GitHubPhalcon\Paginator\Adapter\QueryBuilder
Pagination using a PHQL query builder as source of data
use Phalcon\Paginator\Adapter\QueryBuilder;
$builder = $this->modelsManager->createBuilder()
->columns("inv_id, inv_title")
->from(Invoices::class)
->orderBy("inv_title");
$paginator = new QueryBuilder(
[
"builder" => $builder,
"limit" => 20,
"page" => 1,
]
);Phalcon\Paginator\Adapter\AbstractAdapterPhalcon\Paginator\Adapter\QueryBuilder
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
public__construct( array$config )Phalcon\Paginator\Adapter\QueryBuilderpublicintgetCurrentPage()Get the current page numberpublicBuildergetQueryBuilder()Get query builder objectpublicRepositoryInterfacepaginate()Returns a slice of the resultset to show in the paginationpublicstaticsetQueryBuilder( Builder$builder )Set query builder objectProperties
protectedBuilder$builderPaginator's dataprotectedarray|string$columnsColumn list used only for COUNT rewriting when the builder carries a HAVING or GROUP BY clause. It supplies the columns for the subquery that counts the grouped/having result set and is ignored otherwise.Methods
__construct()
public function __construct( array $config );Phalcon\Paginator\Adapter\QueryBuilder
The columns option is not a projection for the paginated rows; it is
consumed solely by the total-count rewrite when the builder has a
HAVING or GROUP BY clause (it becomes the column list of the counting
subquery). It has no effect on plain queries.
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
ClassSource on GitHubPhalcon\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 ingetNext(). - 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. cursorColumnmust 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)Phalcon\Paginator\Adapter\AbstractAdapterPhalcon\Paginator\Adapter\QueryBuilderCursor
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
public__construct( array$config )Phalcon\Paginator\Adapter\QueryBuilderCursorpublicintgetCurrentPage()Get the current page numberpublicmixedgetCursor()Get the cursor value for the current page (null on first page)publicstringgetCursorColumn()Get the cursor column namepublicBuildergetQueryBuilder()Get query builder objectpublicRepositoryInterfacepaginate()Returns a slice of the resultset to show in the paginationpublicstaticsetCursor( mixed$cursor )Set the cursor value for the next paginate() callpublicstaticsetQueryBuilder( Builder$builder )Set query builder objectProperties
protectedBuilder$builderPaginator's dataprotectedmixed$cursor = nullThe cursor value for the current page (null = first page)protectedstring$cursorColumnThe column used as the cursor (must be unique and indexed)Methods
__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
ClassSource on GitHubPhalcon\Paginator\Exception
Exceptions thrown in Phalcon\Paginator will use this class
\ExceptionPhalcon\Paginator\ExceptionPhalcon\Paginator\Exceptions\BuilderModelNotDefinedPhalcon\Paginator\Exceptions\InvalidBuilderInstancePhalcon\Paginator\Exceptions\InvalidCursorColumnPhalcon\Paginator\Exceptions\InvalidLimitPhalcon\Paginator\Exceptions\MissingColumnsForHavingPhalcon\Paginator\Exceptions\MissingRequiredParameterPhalcon\Paginator\Exceptions\PaginatorDataNotArray
Paginator\Exceptions\BuilderModelNotDefined
ClassSource on GitHub\ExceptionPhalcon\Paginator\ExceptionPhalcon\Paginator\Exceptions\BuilderModelNotDefined
Uses Phalcon\Paginator\Exception
Method Summary
Methods
__construct()
public function __construct();Paginator\Exceptions\InvalidBuilderInstance
ClassSource on GitHub\ExceptionPhalcon\Paginator\ExceptionPhalcon\Paginator\Exceptions\InvalidBuilderInstance
Uses Phalcon\Paginator\Exception
Method Summary
Methods
__construct()
public function __construct();Paginator\Exceptions\InvalidCursorColumn
ClassSource on GitHub\ExceptionPhalcon\Paginator\ExceptionPhalcon\Paginator\Exceptions\InvalidCursorColumn
Uses Phalcon\Paginator\Exception
Method Summary
Methods
__construct()
public function __construct();Paginator\Exceptions\InvalidLimit
ClassSource on GitHub\ExceptionPhalcon\Paginator\ExceptionPhalcon\Paginator\Exceptions\InvalidLimit
Uses Phalcon\Paginator\Exception
Method Summary
Methods
__construct()
public function __construct();Paginator\Exceptions\MissingColumnsForHaving
ClassSource on GitHub\ExceptionPhalcon\Paginator\ExceptionPhalcon\Paginator\Exceptions\MissingColumnsForHaving
Uses Phalcon\Paginator\Exception
Method Summary
Methods
__construct()
public function __construct();Paginator\Exceptions\MissingRequiredParameter
ClassSource on GitHub\ExceptionPhalcon\Paginator\ExceptionPhalcon\Paginator\Exceptions\MissingRequiredParameter
Uses Phalcon\Paginator\Exception
Method Summary
Methods
__construct()
public function __construct( string $parameter );getParameter()
public function getParameter(): string;Paginator\Exceptions\PaginatorDataNotArray
ClassSource on GitHub\ExceptionPhalcon\Paginator\ExceptionPhalcon\Paginator\Exceptions\PaginatorDataNotArray
Uses Phalcon\Paginator\Exception
Method Summary
Methods
__construct()
public function __construct();Paginator\PaginatorFactory
ClassSource on GitHubPhalcon\Factory\AbstractConfigFactoryPhalcon\Factory\AbstractFactoryPhalcon\Paginator\PaginatorFactory
Uses Phalcon\Factory\AbstractFactory · Phalcon\Paginator\Adapter\AdapterInterface
Method Summary
public__construct( array$services = [] )AdapterFactory constructor.publicAdapterInterfaceload( mixed$config )Factory to create an instance from a Config objectpublicAdapterInterfacenewInstance(string$name,array$options = [])Create a new instance of the adapterprotectedstringgetExceptionClass()protectedarraygetServices()Returns the available adaptersMethods
__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("inv_id, inv_title")
->from(Invoices::class)
->orderBy("inv_title");
$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
getExceptionClass()
protected function getExceptionClass(): string;getServices()
protected function getServices(): array;Returns the available adapters
Paginator\Repository
ClassSource on GitHubPhalcon\Paginator\Repository
Repository of current state Phalcon\Paginator\AdapterInterface::paginate()
Phalcon\Paginator\Repository- implementsPhalcon\Paginator\RepositoryInterface,JsonSerializable
Uses JsonSerializable
Method Summary
publicmixed|null__get( string$property ){@inheritdoc}publicarraygetAliases(){@inheritdoc}publicintgetCurrent(){@inheritdoc}publicintgetFirst(){@inheritdoc}publicmixedgetItems(){@inheritdoc}publicintgetLast(){@inheritdoc}publicintgetLimit(){@inheritdoc}publicintgetNext(){@inheritdoc}publicintgetPrevious(){@inheritdoc}publicintgetTotalItems(){@inheritdoc}publicarrayjsonSerialize()See jsonSerializepublicRepositoryInterfacesetAliases( array$aliases ){@inheritdoc}publicRepositoryInterfacesetProperties( array$properties ){@inheritdoc}protectedmixedgetProperty(string$property,mixed$defaultValue = null)Gets value of property by nameprotectedstringgetRealNameProperty( string$property )Resolve alias property nameProperties
protectedarray$aliases = []protectedarray$properties = []Methods
__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}
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
InterfaceSource on GitHubPhalcon\Contracts\Paginator\RepositoryPhalcon\Paginator\RepositoryInterface
Uses Phalcon\Contracts\Paginator\Repository