From b6e002f5a8c8aedfaa6a6bb7934e947b876ec26a Mon Sep 17 00:00:00 2001 From: Alexander Demidov Date: Mon, 29 Sep 2014 15:59:55 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B2=20SqlCriteria.count()=20-=20=D0=B4=D1=83=D0=B1=D0=BB?= =?UTF-8?q?=D0=B8=D1=80=D1=83=D1=8E=D1=89=D0=B5=D0=B5=D1=81=D1=8F=20COUNT(?= =?UTF-8?q?COUNT(=20*=20=D0=B2=D0=BE=20=D0=B2=D0=BD=D1=83=D1=82=D1=80?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D0=B5=D0=BC=20sql-=D0=B7=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Model/SqlCriteria.php | 7 ++++--- Model/SqlModel.php | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Model/SqlCriteria.php b/Model/SqlCriteria.php index a77d153..c437d06 100644 --- a/Model/SqlCriteria.php +++ b/Model/SqlCriteria.php @@ -79,16 +79,17 @@ class SqlCriteria return $this->model->find('', '', $this->where, null, null, null, null, 'DELETE FROM :table', $this->sql_expression_params)->affectedRows(); } + //TODO: перенести определение sql_expression в модель public function count($select = null) { $this->defineJoinExpressions($select); $sql_expression_backup = $this->sql_expression; - $select = 'COUNT(*) as count'; + $select_parent_query = 'COUNT(*) as count'; if (!$this->sql_expression) { $this->sql_expression = 'SELECT COUNT(' . ($select ? $select : '*') . ') as count FROM :table'; - $select = 'x.count'; + $select_parent_query = 'x.count'; } - $count = $this->model->count($select, $this->where, null, $this->group_by, $this->sql_expression, $this->sql_expression_params)->fetchField('count'); + $count = $this->model->count($select_parent_query, $this->where, null, $this->group_by, $this->sql_expression, $this->sql_expression_params)->fetchField('count'); $this->sql_expression = $sql_expression_backup; return $count; } diff --git a/Model/SqlModel.php b/Model/SqlModel.php index e5cf525..669f6e7 100644 --- a/Model/SqlModel.php +++ b/Model/SqlModel.php @@ -226,12 +226,12 @@ abstract class SqlModel extends Model return new SqlResultProvider($result); } - public function count($select = 'x.count', $where, $heaving = null, $group_by = null, $sql_expression = null, $sql_expression_params = array(), $cache_key = null) + public function count($select_parent_query = 'x.count', $where, $heaving = null, $group_by = null, $sql_expression = null, $sql_expression_params = array(), $cache_key = null) { $where = $this->db->whereExpr($where); $group_by = $this->db->groupByExpr($group_by); $result = $this->query( - 'SELECT ' . $select . ' FROM (' . + 'SELECT ' . $select_parent_query . ' FROM (' . (($sql_expression) ? $sql_expression : ('SELECT * FROM ' . $this->identify($this->table()))) . (($where) ? (' WHERE ' . $where) : '') . (($group_by) ? (' GROUP BY ' . $group_by) : '') . ') AS x',