diff --git a/ActiveQuery.php b/ActiveQuery.php index 2533fbd..247505f 100644 --- a/ActiveQuery.php +++ b/ActiveQuery.php @@ -262,8 +262,7 @@ class ActiveQuery extends Component implements ISqlBuilder */ public function count(): int { - $builder = clone $this->builder; - $data = $this->execute($builder->count())->one(); + $data = $this->execute($this->builder->count())->one(); if ($data && is_array($data)) { return (int)array_shift($data); } diff --git a/SqlBuilder.php b/SqlBuilder.php index 6e1219d..4881470 100644 --- a/SqlBuilder.php +++ b/SqlBuilder.php @@ -205,6 +205,9 @@ class SqlBuilder extends Component */ public function one(): string { + if (count($this->query->select) < 1) { + $this->query->select = ['*']; + } return $this->_selectPrefix() . $this->_prefix() . $this->builderLimit($this->query); } @@ -215,6 +218,9 @@ class SqlBuilder extends Component */ public function all(): string { + if (count($this->query->select) < 1) { + $this->query->select = ['*']; + } return $this->_selectPrefix() . $this->_prefix() . $this->builderLimit($this->query); } @@ -225,8 +231,7 @@ class SqlBuilder extends Component */ public function count(): string { - $this->query->select('COUNT(*)'); - return $this->_selectPrefix() . $this->_prefix() . $this->builderLimit($this->query); + return $this->_selectPrefix(['COUNT(*)']) . $this->_prefix() . $this->builderLimit($this->query); } @@ -263,12 +268,9 @@ class SqlBuilder extends Component * @return string * @throws Exception */ - private function _selectPrefix(): string + private function _selectPrefix(array $select = ['*']): string { - if (count($this->query->select) < 1) { - $this->query->select = ['*']; - } - $select = "SELECT " . implode(',', $this->query->select) . " FROM " . $this->query->from; + $select = "SELECT " . implode(',', $select) . " FROM " . $this->query->from; if ($this->query->alias != "") { $select .= " AS " . $this->query->alias; }