public function findEditable(Query $query, array $options = []) { $mapper = function ($setting, $path, $mapReduce) { $type = 'editable'; if ($setting->hidden == true) { $type = 'hidden'; } $mapReduce->emitIntermediate($setting, $type); }; $reducer = function ($articles, $type, $mapReduce) { $mapReduce->emit($articles, $type); }; return $query->mapReduce($mapper, $reducer); }
/** * Tests that multiple map reducers can be stacked * * @return void */ public function testResultsAreWrappedInMapReduce() { $table = TableRegistry::get('articles', ['table' => 'articles']); $query = new Query($this->connection, $table); $query->select(['a' => 'id'])->limit(2)->order(['id' => 'ASC']); $query->mapReduce(function ($v, $k, $mr) { $mr->emit($v['a']); }); $query->mapReduce(function ($v, $k, $mr) { $mr->emitIntermediate($v, $k); }, function ($v, $k, $mr) { $mr->emit($v[0] + 1); }); $this->assertEquals([2, 3], iterator_to_array($query->all())); }