如何将数据附加到cakephp 3中的结果集中

时间:2015-09-04 23:01:06

标签: cakephp orm append resultset cakephp-3.0

我有一个像这样的简单json视图

{
  "articles": [
    {
      "id": 1,
      "title": "Article one",
    },
    {
      "id": 2,
      "title": "Article two",
    }
  ]
}

这个结果是分页的,我想将pageCount附加到结果中,就像这样。

{
      "articles": [
        {
          "id": 1,
          "title": "Article one",
        },
        {
          "id": 2,
          "title": "Article two",
        }
      ],
     "pageCount": 5
    }

我怎样才能做到这一点?我不能直接附加它,因为它是一个结果集对象。 我应该在视图/控制器/模型中执行此操作吗? 非常感谢!

1 个答案:

答案 0 :(得分:1)

_serialize键

鉴于您使用的是JsonView和自动序列化

<强> this SO question

您可以简单地为视图添加另一个变量,并将其标记为序列化,例如

$this->set('articles', $this->paginate());
$this->set('pageCount', $this->request->params['paging'][$this->Articles->alias()]['pageCount']);
$this->set('_serialize', ['articles', 'pageCount']);

使用视图模板

如果您没有使用自动序列化,而是使用自定义视图模板

<强> Cookbook > Views > JSON and XML Views > Using Data Views with the Serialize Key

您可以在模板中使用PaginatorHelper并在转换为JSON时添加数据,例如

$pageCount = $this->Paginator->param('pageCount');
echo json_encode(compact('articles', 'pageCount'));