Paginator\Adapter\AbstractAdapter
AbstractSource on GitHubPhalcon\Paginator\Adapter\AbstractAdapter
Phalcon\Paginator\Adapter\AbstractAdapter- implementsPhalcon\Paginator\Adapter\AdapterInterface
Uses Phalcon\Contracts\Paginator\PaginatorTypes · Phalcon\Paginator\Exception · Phalcon\Paginator\Exceptions\InvalidLimit · Phalcon\Paginator\Exceptions\MissingRequiredParameter · Phalcon\Paginator\Repository · Phalcon\Paginator\RepositoryInterface
Method Summary
public__construct( array$config )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|null$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 );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|null $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 GitHubThis 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\Contracts\Paginator\PaginatorTypes · 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 GitHubPagination 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 GitHubPagination 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\Contracts\Db\Adapter\Adapter · Phalcon\Contracts\Paginator\PaginatorTypes · 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 dataprotectedpaginator_columns|null$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 GitHubCursor-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\Contracts\Paginator\PaginatorTypes · Phalcon\Mvc\Model\Query\Builder · 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 GitHubExceptions 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\Config\Config · Phalcon\Config\ConfigInterface · Phalcon\Contracts\Paginator\PaginatorTypes · Phalcon\Factory\AbstractFactory · Phalcon\Paginator\Adapter\AdapterInterface · Phalcon\Paginator\Adapter\Model · Phalcon\Paginator\Adapter\NativeArray · Phalcon\Paginator\Adapter\QueryBuilder · Phalcon\Paginator\Adapter\QueryBuilderCursor · Throwable
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 GitHubRepository of current state Phalcon\Paginator\AdapterInterface::paginate()
Phalcon\Paginator\Repository- implementsPhalcon\Paginator\RepositoryInterface,\JsonSerializable
Uses JsonSerializable · Phalcon\Contracts\Paginator\PaginatorTypes
Method Summary
publicmixed|null__get( string$property )publicarraygetAliases()publicintgetCurrent()publicintgetFirst()publicmixedgetItems()publicintgetLast()publicintgetLimit()publicintgetNext()publicintgetPrevious()publicintgetTotalItems()publicarrayjsonSerialize()publicRepositoryInterfacesetAliases( array$aliases )publicRepositoryInterfacesetProperties( array$properties )protectedmixedgetProperty(string$property,mixed$defaultValue = null)Gets value of property by nameprotectedstringgetRealNameProperty( string$property )Resolve alias property nameProperties
protectedpaginator_aliases$aliases = []protectedpaginator_properties$properties = []Methods
__get()
public function __get( string $property ): mixed|null;getAliases()
public function getAliases(): array;getCurrent()
public function getCurrent(): int;getFirst()
public function getFirst(): int;getItems()
public function getItems(): mixed;getLast()
public function getLast(): int;getLimit()
public function getLimit(): int;getNext()
public function getNext(): int;getPrevious()
public function getPrevious(): int;getTotalItems()
public function getTotalItems(): int;jsonSerialize()
public function jsonSerialize(): array;setAliases()
public function setAliases( array $aliases ): RepositoryInterface;setProperties()
public function setProperties( array $properties ): RepositoryInterface;getProperty()
protected function getProperty(
string $property,
mixed $defaultValue = null
): mixed;Gets value of property by name
The repository is filled by the adapters, which store an int under every property that has an int default, so callers passing one are handed an int back.
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