Наследование: extends FieldTable, implements MappableObject
 public function testOrderBy()
 {
     $query = OQL::select('from TestUser');
     $criteria = Criteria::create(TestUser::dao());
     $this->assertCriteria($query->addOrderBy(OQL::orderBy('id')), $criteria->addOrder(OrderBy::create('id')));
     $this->assertCriteria($query->addOrderBy(OQL::orderBy('name asc, city.id desc')), $criteria->addOrder(OrderBy::create('name')->asc())->addOrder(OrderBy::create('city.id')->desc()));
     $this->assertEquals(OQL::orderBy('id + city.id desc, name')->toOrder(), OrderChain::create()->add(OrderBy::create(Expression::add('id', 'city.id'))->desc())->add(OrderBy::create('name')));
     $order = OQL::orderBy('name ilike $1')->bindNext('%ЙЦуК');
     $this->assertEquals($order->toOrder(), OrderChain::create()->add(OrderBy::create(Expression::ilike('name', '%ЙЦуК'))));
     $this->assertCriteria(OQL::select('from TestUser')->addOrderBy($order)->bindNext('test'), Criteria::create(TestUser::dao())->addOrder(OrderBy::create(Expression::ilike('name', 'test'))));
 }
 public static function down(DAOConnected $object, LogicalObject $exp = null)
 {
     $getMethod = 'get' . ucfirst(self::$property);
     Assert::isTrue(method_exists($object, $getMethod));
     $oldPosition = $object->{$getMethod}();
     $criteria = Criteria::create($object->dao())->add(Expression::gt(self::$property, $oldPosition))->addOrder(OrderBy::create(self::$property)->asc())->setLimit(1);
     if ($exp) {
         $criteria->add($exp);
     }
     if ($lowerObject = $criteria->get()) {
         DaoUtils::setNullValue(self::$nullValue);
         DaoUtils::swap($lowerObject, $object, self::$property);
     }
 }
Пример #3
0
 /**
  * @return string
  */
 protected function formatOrderBy()
 {
     $orderBys = '';
     foreach ($this->orderBy as $orderBy) {
         if (is_array($orderBy)) {
             $orderBy = new OrderBy($orderBy['field'], $orderBy['order']);
         }
         if (!$orderBy instanceof OrderBy) {
             continue;
         }
         $orderBys .= $orderBy->getSql($orderBys === '');
     }
     return $orderBys;
 }
Пример #4
0
 public static function orderDataProvider()
 {
     return array(array(OrderBy::create('id'), 'test_user.id'), array(OrderChain::create()->add(OrderBy::create('id')->asc())->add(OrderBy::create('id')), 'test_user.id ASC, test_user.id'), array(OrderBy::create('id')->asc(), 'test_user.id ASC'), array(OrderBy::create('id')->desc(), 'test_user.id DESC'), array(OrderBy::create('id')->nullsFirst(), 'test_user.id NULLS FIRST'), array(OrderBy::create('id')->nullsLast(), 'test_user.id NULLS LAST'), array(OrderBy::create('id')->asc()->nullsLast(), 'test_user.id ASC NULLS LAST'), array(OrderBy::create('id')->desc()->nullsFirst(), 'test_user.id DESC NULLS FIRST'), array(OrderBy::create(Expression::isNull('id'))->asc()->nullsFirst(), '((test_user.id IS NULL)) ASC NULLS FIRST'));
 }
 function action_releases()
 {
     $releases = PhoebiusRelease::query()->orderBy(OrderBy::desc('date'))->getList();
     $this->getModel()->append(array('releases' => $releases));
     return 'admin/releases';
 }
 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)))));
 }
 function action_newsList()
 {
     $announcements = EntityQuery::create(Announcement::orm())->orderBy(OrderBy::desc('date'))->setLimit(self::LIMIT_ENTRIES_PER_PAGE)->setOffset(0)->getList();
     $this->getModel()->append(array('announcements' => $announcements, 'breadScrumbs' => array()));
     return 'news';
 }