如何在蛋糕php 3.x中使用mapReduce进行分页

时间:2017-03-20 18:10:07

标签: php cakephp pagination mapreduce cakephp-3.0

我需要这个来删除X结果,让我们说这个例子我想删除一个结果。但我希望所有其他结果保持完全相同。

我正在关注:

https://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html#modifying-results-with-map-reduce

https://api.cakephp.org/3.3/class-Cake.Collection.Iterator.MapReduce.html

现在我正在尝试实现,使用map reduce并获得完全相同的结果。所以我以后可以添加条件来删除单个结果。

我需要将帖子缩小后的结果保留为查询对象,以便我可以对结果进行分页(我不确定这是否可行)

$mapper = function ($query, $key, $mapReduce) {
    $everything = 'all';
    $mapReduce->emitIntermediate($query, $everything);
    };

$reducer = function ($query, $status, $mapReduce) {
    $mapReduce->emit($query,$status);
    };

$query = /* ... Make any query on anything ... */

$query->mapReduce($mapper,$reducer);

$paginateforview = $this->paginate($query);

这会导致我的结果只是以数组的形式计算结果中的项目数。

我想要一个示例,说明map / reduce如何减少任何内容,或者甚至是否可能。

我已经尝试过地图,但根据文档,这是map / reduce每个地图的工作无法删除结果。

https://book.cakephp.org/3.0/en/orm/query-builder.html

$query->formatResults(function (\Cake\Collection\CollectionInterface $results) {
    return $results->map(function ($row) {
        //Something that unsets the result I tried unset($row)
        return $row;
    });
});

总之,我需要mapper来返回所有内容,并使用reducer来减去整个结果或更基本的用法示例,然后是菜谱中的内容。

注意:我意识到编辑数据库以便我的查询允许过滤结果将是最佳的,但是现在我正在构建自定义报告,我不能只是将数据添加到数据库中。

0 个答案:

没有答案