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; }