symfony - 有没有办法使用 ApiPlatform 分页来获取总项目?
问题描述
我正在尝试使用 bootstrap-vue 对表客户端进行分页。我试图分页的 api 资源实际上有 44 个项目。
bootstrap-vue 分页组件需要一个 total-row 属性来获取总页数(基于每页的项目)/resource
GET
响应返回hydra:totalItems: 15
15 实际上是我在 App/config/packages/api_platform.yaml 配置中的默认 itemsPerPage,如下所示:
collection:
exists_parameter_name: 'exists'
order: 'DESC'
order_parameter_name: 'order'
pagination:
enabled: true
partial: true
client_enabled: true
client_items_per_page: true
client_partial: true
items_per_page: 15
maximum_items_per_page: 100
page_parameter_name: 'page'
enabled_parameter_name: 'pagination'
items_per_page_parameter_name: 'itemsPerPage'
partial_parameter_name: 'partial'
对于 partial=true/false 和 ?itemsPerPage=x,我得到了相同的结果。分页本身正在工作:如果我要求?page=1
或?page=2
我得到正确的项目,但hydra:totalItems
总是指基于 itemsPerPage 参数返回的项目。
此外,根据ApiPlatform 文档,我还应该收到一个hydra:view
对象,其中包含关于下一个、上一个和最后一个项目的信息,只是在服务器上使用其默认值启用分页,但它不在响应中。
有没有办法接收分页集合和总数?
当前配置:
ApiPlatform v. 1.2.2
Symfony 5.1
解决方案
我将此问题更多地视为业务逻辑,而不是 API 平台功能
我相信最简单的方法是在实体的对象存储库中实现一个查询,该查询计算记录总数并使用 getter 返回实体的属性。
了解如何使用 Symfony 文档Querying for Objects: The Repository来实现这一点
推荐阅读
- google-compute-engine - 无法授予对 GCE 实例的只读 GCR 访问权限
- javascript - 如果条件不运行但其他条件有效
- android - 更新到 Target API 26 后,不再支持少数手机
- jquery - 如何将数组的每个项目拆分为新的div
- mysql - Mysql加入三张表并分组
- javascript - 如何通过将鼠标悬停在树下方的元素上来隐藏树上方的元素
- mongodb - Mongo 自定义配置未连接到 Mongo 实例
- chef-infra - 将 inspec 配置文件上传到 Chef Automate 时出现 Inspec 4.16.0 问题
- angular - 在 Angular 中导入数据
- python - 如何使用 Python 以编程方式将行添加到现有 Excel 表