public function testSelectStatementWithLimit()
 {
     $statement = new SelectStatement();
     $statement->addField(new FieldExpression('field1'));
     $statement->addField(new FieldExpression('field2'));
     $statement->addField(new FieldExpression('field3'));
     $statement->addTable(new TableExpression('table'));
     $statement->setLimit(15, 10);
     $sql = $this->parser->parseStatement($statement);
     $this->assertNotNull($sql);
     $this->assertEquals('SELECT `field1`, `field2`, `field3` FROM `table` LIMIT 15 OFFSET 10', $sql);
 }
 /**
  * Parses a model query into a database select statement
  * @param zibo\library\orm\query\ModelQuery $modelQuery
  * @return zibo\library\database\manipulation\statement\SelectStatement
  */
 public function parseQuery(ModelQuery $modelQuery)
 {
     $this->setModelQuery($modelQuery);
     $this->statement->setDistinct($modelQuery->isDistinct());
     $limitCount = $modelQuery->getLimitCount();
     if ($limitCount) {
         $this->statement->setLimit($limitCount, $modelQuery->getLimitOffset());
     }
     $this->addFields($modelQuery->getFields());
     $joins = $this->parseJoins($modelQuery->getJoins());
     $conditions = $this->parseConditions($modelQuery->getConditions());
     $groupBy = $this->parseOrderBy($modelQuery->getGroupBy());
     $orderBy = $this->parseOrderBy($modelQuery->getOrderBy());
     $this->addJoins($joins);
     $this->addConditions($conditions, $modelQuery->getOperator());
     $this->addGroupBy($groupBy);
     $this->addOrderBy($orderBy);
     return $this->statement;
 }