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);
 }
Example #2
0
 /**
  * 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()));
 }