public function testSetProjection()
 {
     $criteria = Criteria::create(TestUser::dao())->setProjection(Projection::chain()->add(Projection::property('id')));
     $this->assertEquals($criteria->getProjection(), Projection::chain()->add(Projection::property('id')));
     $criteria = Criteria::create(TestUser::dao())->setProjection(Projection::property('id'));
     $this->assertEquals($criteria->getProjection(), Projection::chain()->add(Projection::property('id')));
 }
 /**
  * @return ProjectionChain
  **/
 public function toProjection()
 {
     $projection = Projection::chain();
     foreach ($this->list as $property) {
         $projection->add($property->evaluate($this->parameters));
     }
     return $projection;
 }
 public function testGroupBy()
 {
     $query = OQL::select('from TestUser');
     $criteria = Criteria::create(TestUser::dao());
     $this->assertCriteria($query->addGroupBy(OQL::groupBy('id')), $criteria->addProjection(Projection::group('id')));
     $this->assertCriteria($query->addGroupBy(OQL::groupBy('-name')), $criteria->addProjection(Projection::group(Expression::minus('name'))));
     $this->assertEquals(OQL::groupBy('id, name')->toProjection(), Projection::chain()->add(Projection::group('id'))->add(Projection::group('name')));
     $this->assertEquals(OQL::groupBy('id + 2')->toProjection(), Projection::chain()->add(Projection::group(Expression::add('id', 2))));
     $this->assertEquals(OQL::groupBy('id > 2')->toProjection(), Projection::chain()->add(Projection::group(Expression::gt('id', 2))));
     $this->assertEquals(OQL::groupBy('$1')->bindNext('id')->toProjection(), Projection::chain()->add(Projection::group('id')));
     $this->assertEquals(OQL::groupBy('$1, $2 + 3')->bindNext('name')->bindNext('id')->toProjection(), Projection::chain()->add(Projection::group('name'))->add(Projection::group(Expression::add('id', 3))));
 }
 public function testQuery()
 {
     $criteria = Criteria::create(TestUser::dao())->setProjection(Projection::property('id'))->add(Expression::isTrue('id'));
     $this->assertCriteria('id from TestUser where id is true', $criteria)->assertCriteria('id from TestUser where id is true order by id asc', $criteria->addOrder(OrderBy::create('id')->asc()))->assertCriteria('id from TestUser where id is true order by id asc limit 10 offset 1', $criteria->setLimit(10)->setOffset(1))->assertCriteria('id from TestUser where id is true group by id order by id asc limit 10 offset 1', $criteria->setProjection(Projection::chain()->add(Projection::property('id'))->add(Projection::group('id'))))->assertCriteria('id from TestUser where id is true group by id order by id asc having id = 1 limit 10 offset 1', $criteria->setProjection(Projection::chain()->add(Projection::property('id'))->add(Projection::group('id'))->add(Projection::having(Expression::eq('id', 1)))))->assertCriteria('count(id) as count from TestUser group by id having count = 2', Criteria::create(TestUser::dao())->setProjection(Projection::chain()->add(Projection::count('id', 'count'))->add(Projection::group('id'))->add(Projection::having(Expression::eq('count', 2)))));
 }
Esempio n. 5
0
 /**
  * @return Criteria
  **/
 public function dropProjection()
 {
     $this->projection = Projection::chain();
     return $this;
 }