Phalcon paginator
NOTE
All classes are prefixed with Phalcon
Paginator\Adapter\AbstractAdapter
¶
-
Namespace
Phalcon\Paginator\Adapter
-
Uses
Phalcon\Paginator\ExceptionPhalcon\Paginator\RepositoryPhalcon\Paginator\RepositoryInterface
-
Extends
-
Implements
AdapterInterface
Phalcon\Paginator\Adapter\AbstractAdapter
Properties¶
/**
* Configuration of paginator
*
* @var array
*/
protected $config;
/**
* Number of rows to show in the paginator. By default is null
*
* @var int|null
*/
protected $limitRows;
/**
* Current page in paginate
*
* @var int|null
*/
protected $page;
/**
* Repository for pagination
*
* @var RepositoryInterface
*/
protected $repository;
Methods¶
Phalcon\Paginator\Adapter\AbstractAdapter constructor Get current rows limit Set the current page number Set current rows limit Sets current repository for pagination Gets current repository for paginationPaginator\Adapter\AdapterInterface
¶
-
Namespace
Phalcon\Paginator\Adapter
-
Uses
Phalcon\Contracts\Paginator\Adapter
-
Extends
AdapterContract -
Implements
@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Paginator\Adapter} instead.
Paginator\Adapter\Model¶
-
Namespace
Phalcon\Paginator\Adapter
-
Uses
Phalcon\Mvc\ModelInterfacePhalcon\Mvc\Model\ResultsetInterfacePhalcon\Paginator\ExceptionPhalcon\Paginator\RepositoryInterface
-
Extends
AbstractAdapter -
Implements
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();
Methods¶
Returns a slice of the resultset to show in the paginationPaginator\Adapter\NativeArray¶
-
Namespace
Phalcon\Paginator\Adapter
-
Uses
Phalcon\Paginator\ExceptionPhalcon\Paginator\RepositoryInterface
-
Extends
AbstractAdapter -
Implements
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,
]
);
Methods¶
Returns a slice of the resultset to show in the paginationPaginator\Adapter\QueryBuilder¶
-
Namespace
Phalcon\Paginator\Adapter
-
Uses
Phalcon\Db\EnumPhalcon\Mvc\Model\Query\BuilderPhalcon\Paginator\ExceptionPhalcon\Paginator\RepositoryInterface
-
Extends
AbstractAdapter -
Implements
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,
]
);
Properties¶
/**
* Paginator's data
*
* @var Builder
*/
protected $builder;
/**
* Columns for count query if builder has having or group by
*
* @var array|string
*/
protected $columns;
Methods¶
Phalcon\Paginator\Adapter\QueryBuilder Get the current page number Get query builder object Returns a slice of the resultset to show in the pagination Set query builder objectPaginator\Adapter\QueryBuilderCursor¶
-
Namespace
Phalcon\Paginator\Adapter
-
Uses
Phalcon\Mvc\Model\Query\BuilderPhalcon\Paginator\ExceptionPhalcon\Paginator\RepositoryInterface
-
Extends
AbstractAdapter -
Implements
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)
Properties¶
/**
* Paginator's data
*
* @var Builder
*/
protected $builder;
/**
* The cursor value for the current page (null = first page)
*
* @var mixed
*/
protected $cursor;
/**
* The column used as the cursor (must be unique and indexed)
*
* @var string
*/
protected $cursorColumn;
Methods¶
Phalcon\Paginator\Adapter\QueryBuilderCursor Get the current page numberReturns the cursor value used for this page cast to int, or 0 for the first page. Use getCursor() to retrieve the raw cursor value.
Get the cursor value for the current page (null on first page) Get the cursor column name Get query builder object Returns a slice of the resultset to show in the paginationFetches 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.
Pass the value returned by Repository::getNext() to advance to the next page, or null to restart from the first page.
Set query builder objectPaginator\Exception¶
-
Namespace
Phalcon\Paginator
-
Uses
-
Extends
\Exception -
Implements
Phalcon\Paginator\Exception
Exceptions thrown in Phalcon\Paginator will use this class
Paginator\PaginatorFactory¶
-
Namespace
Phalcon\Paginator
-
Uses
Phalcon\Factory\AbstractFactoryPhalcon\Paginator\Adapter\AdapterInterface
-
Extends
AbstractFactory -
Implements
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.
Methods¶
AdapterFactory constructor. Factory to create an instance from a Config objectuse 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);
Paginator\Repository¶
-
Namespace
Phalcon\Paginator
-
Uses
JsonSerializable
-
Extends
-
Implements
JsonSerializableRepositoryInterface
Phalcon\Paginator\Repository
Repository of current state Phalcon\Paginator\AdapterInterface::paginate()
Properties¶
Methods¶
See jsonSerialize Gets value of property by name Resolve alias property namePaginator\RepositoryInterface
¶
-
Namespace
Phalcon\Paginator
-
Uses
Phalcon\Contracts\Paginator\Repository
-
Extends
RepositoryContract -
Implements
@psalm-suppress DeprecatedInterface @deprecated Will be removed in a future major release. Use {@see \Phalcon\Contracts\Paginator\Repository} instead.