Example #1
0
 /**
  * Where statement
  * Limits query result using expression
  */
 function execute()
 {
     $query = $this->getQuery();
     $args = $this->getArguments();
     $name = $args[0];
     $section = null;
     if (strpos($name, '.') !== false) {
         list($section, $name) = explode('.', $name);
     }
     $value = null;
     if (isset($args[1])) {
         $value = $args[1];
     }
     $query->attach(xral\Stream\Query::COMPLETE, function ($s, $e) use($name, $value, $section) {
         $result = $e['result'];
         if (!is_null($section)) {
             if (isset($result[$section])) {
                 $result = new qinq\Collection([$section => $result[$section]]);
             }
         }
         $result->where(function ($data) use($name, $value) {
             if (!is_null($value)) {
                 return array_key_exists($name, $data) && $data[$name] == $value;
             } else {
                 return array_key_exists($name, $data);
             }
         });
         $e['result'] = $result;
     });
 }
Example #2
0
 function testIntegratedQueryWhereKeys()
 {
     $numbers = new qinq\Collection(['bob' => 1, 'jim' => 2, 'sam' => 3, 'joe' => 4, 'jack' => 5]);
     $numbers->where(function ($n, $k) {
         return strlen($k) == 3;
     });
     $this->assertEquals(4, count($numbers));
 }