/**
  * Parses a model query into a database select statement to count the result
  * @param zibo\library\orm\query\ModelQuery $modelQuery
  * @return zibo\library\database\manipulation\statement\SelectStatement
  */
 public function parseQueryForCount(ModelQuery $modelQuery)
 {
     $this->setModelQuery($modelQuery);
     $this->statement->setLimit(1);
     if ($this->includeUnlocalizedData && $this->meta->isLocalized()) {
         $this->localize = true;
     }
     $joins = $this->parseJoins($modelQuery->getJoins());
     $conditions = $this->parseConditions($modelQuery->getConditions());
     $groupBy = $this->parseOrderBy($modelQuery->getGroupBy());
     $this->addJoins($joins);
     $this->addConditions($conditions, $modelQuery->getOperator());
     //        $this->addGroupBy($groupBy);
     $countField = new FunctionExpression(FunctionExpression::FUNCTION_COUNT, self::ALIAS_COUNT);
     if ($groupBy) {
         $countField->setDistinct(true);
         foreach ($groupBy as $group) {
             $countField->addArgument($group->getExpression());
         }
     } else {
         if ($modelQuery->isDistinct()) {
             $countField->addArgument(new FieldExpression(ModelTable::PRIMARY_KEY, $this->tables[self::ALIAS_SELF]));
             $countField->setDistinct(true);
         } else {
             $countField->addArgument(new SqlExpression('*'));
         }
     }
     $this->statement->clearFields();
     $this->statement->clearOrderBy();
     $this->statement->addField($countField);
     return $this->statement;
 }