trinetus / symfony-datatables
Symfony 和 JS datatables 的桥梁,支持分页/无限滚动和过滤。此包处于开发中,请勿在生产环境中使用!
0.1.9
2021-11-06 07:26 UTC
Requires
- doctrine/annotations: ^1.8
- doctrine/collections: ^1.6
- symfony/http-foundation: ^4.0|^5.0
- symfony/serializer: ^4.0|^5.0
This package is auto-updated.
Last update: 2024-09-06 12:16:34 UTC
README
这是一个仅用于测试的包。请勿在生产环境中使用!
安装
composer require trinetus/symfony-datatables
用法
- 使用控制器特质
use Trinetus\DatatablesControllerTrait;
- 获取过滤条件,并过滤加分页 Doctrine 相关数据,以 JSON 格式返回(与 datatables 服务器端兼容)
public function list(Request $request)
{
$this->setRequest($request);
$criteria = $this->getFilterCriteria();
$criteria = $this->getSearchCriteria(["title","description"], $criteria);
$data = $this->getRepository(MyEntity::class)->findByCriteria($criteria);
$totalRecords = $this->getRepository(Product::class)->countFromCollection($data);
return $this->datatablesJson($data->addCriteria($this->getPaginationCriteria())->getQuery()->getResult(), $totalRecords);
}
- 自定义实现获取数据和数据总数的方法的示例
public function findByCriteria(?Criteria $filterCriteria): QueryBuilder
{
$qb = $this->createQueryBuilder('p');
if(!empty($filterCriteria))
{
$qb->addCriteria($filterCriteria);
}
return $qb;
}
public function countFromCollection(QueryBuilder $collection)
{
return (clone $collection)->select('COUNT(p)')->getQuery()->getSingleScalarResult();
}