Correct detect count records in SQlCriteria with use group by

This commit is contained in:
2014-07-28 11:50:27 +04:00
parent 15ea37109d
commit 2a98f9b0d7
2 changed files with 17 additions and 8 deletions

View File

@ -82,14 +82,7 @@ class SqlCriteria
public function count()
{
$this->defineJoinExpressions();
$sql_expression_backup = $this->sql_expression;
if ($this->sql_expression && !strstr('COUNT(*)', $this->sql_expression)) {
$this->sql_expression = preg_replace('#^SELECT .+ FROM#', 'SELECT COUNT(*) as count FROM', $this->sql_expression);
} else {
$this->sql_expression = 'SELECT COUNT(*) as count FROM :table';
}
$count = $this->model->find(array(), '', $this->where, null, null, null, null, $this->sql_expression, $this->sql_expression_params)->fetchField('count');
$this->sql_expression = $sql_expression_backup;
$count = $this->model->count(array(), '', $this->where, null, $this->group_by, $this->sql_expression, $this->sql_expression_params)->fetchField('count');
return $count;
}