function testOrderByItem() { $o = new OrderBy(); $o->setColumn('name'); $this->assertEquals('/orderby:name/', $o->asUrl()->toString(), 'Адрес для сортировки без указанного URL'); $o->setUrl(new URL('test', 'me', array('orderby' => 'id', 'id' => 2))); $this->assertEquals('/test/me/orderby:name/id:2/', $o->asUrl()->toString(), 'Адрес для сортировки с указанным URL'); $this->assertEquals('`name` ASC', $o->asSQL(), 'Сортировка по имени колонки по-возрастанию'); $this->assertEquals('name', $o->asUrlParameter(), 'Сортировка по-возрастанию'); $this->assertEquals('_name', $o->asUrlParameter(false), 'Сортировка по-убыванию указанная явно'); $o->setAsc(false); $this->assertEquals('_name', $o->asUrlParameter(), 'Сортировка по-убыванию указанная через свойство объекта'); $this->assertEquals('`name` DESC', $o->asSQL(), 'Сортировка по имени колонки по-убыванию'); $o->setSql('count(*)'); $this->assertEquals('count(*) DESC', $o->asSQL(), 'Сортировка по указанному условию SQL по-убыванию'); }
/** * Добавление возможности сортировки по колонке * * @return OrderBy */ public function addOrderBy($column, $name = null, $sql = null) { $o = new OrderBy(); $o->setColumn($column); $o->setName($name); $o->setSql($sql); $o->setNavigator($this); $this->orderby_options[$column] = $o; return $o; }