Исправление ошибки в SqlCriteria.count()
This commit is contained in:
@ -79,17 +79,14 @@ class SqlCriteria
|
|||||||
return $this->model->find('', '', $this->where, null, null, null, null, 'DELETE FROM :table', $this->sql_expression_params)->affectedRows();
|
return $this->model->find('', '', $this->where, null, null, null, null, 'DELETE FROM :table', $this->sql_expression_params)->affectedRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count($select = 'x')
|
public function count($select = null)
|
||||||
{
|
{
|
||||||
$this->defineJoinExpressions($select);
|
$this->defineJoinExpressions($select);
|
||||||
$sql_expression_backup = $this->sql_expression;
|
$sql_expression_backup = $this->sql_expression;
|
||||||
if ($select) {
|
|
||||||
$this->select( $select );
|
|
||||||
}
|
|
||||||
if (!$this->sql_expression) {
|
if (!$this->sql_expression) {
|
||||||
$this->sql_expression = 'SELECT COUNT(' . ($select ? $select : '*') . ') as count FROM :table';
|
$this->sql_expression = 'SELECT COUNT(' . ($select ? $select : '*') . ') as count FROM :table';
|
||||||
}
|
}
|
||||||
$count = $this->model->count($select, '', $this->where, null, $this->group_by, $this->sql_expression, $this->sql_expression_params)->fetchField('count');
|
$count = $this->model->count($this->where, null, $this->group_by, $this->sql_expression, $this->sql_expression_params)->fetchField('count');
|
||||||
$this->sql_expression = $sql_expression_backup;
|
$this->sql_expression = $sql_expression_backup;
|
||||||
return $count;
|
return $count;
|
||||||
}
|
}
|
||||||
|
@ -226,13 +226,12 @@ abstract class SqlModel extends Model
|
|||||||
return new SqlResultProvider($result);
|
return new SqlResultProvider($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function count($select = 'x', $distinct, $where,$heaving = null, $group_by = null, $sql_expression = null, $sql_expression_params = array(), $cache_key = null)
|
public function count($where, $heaving = null, $group_by = null, $sql_expression = null, $sql_expression_params = array(), $cache_key = null)
|
||||||
{
|
{
|
||||||
$select = $this->db->selectExpr($select, $distinct);
|
|
||||||
$where = $this->db->whereExpr($where);
|
$where = $this->db->whereExpr($where);
|
||||||
$group_by = $this->db->groupByExpr($group_by);
|
$group_by = $this->db->groupByExpr($group_by);
|
||||||
$result = $this->query(
|
$result = $this->query(
|
||||||
'SELECT COUNT(*) as count FROM (' .
|
'SELECT x.count FROM (' .
|
||||||
(($sql_expression) ? $sql_expression : ('SELECT * FROM ' . $this->identify($this->table())))
|
(($sql_expression) ? $sql_expression : ('SELECT * FROM ' . $this->identify($this->table())))
|
||||||
. (($where) ? (' WHERE ' . $where) : '')
|
. (($where) ? (' WHERE ' . $where) : '')
|
||||||
. (($group_by) ? (' GROUP BY ' . $group_by) : '') . ') AS x',
|
. (($group_by) ? (' GROUP BY ' . $group_by) : '') . ') AS x',
|
||||||
|
Reference in New Issue
Block a user