Commit b2d91669 by Carsten Brandt

refactored scalar query functions to share common code

parent 124a73a5
......@@ -190,11 +190,7 @@ class Query extends Component implements QueryInterface
*/
public function count($q = '*', $db = null)
{
$select = $this->select;
$this->select = ["COUNT($q)"];
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
return $this->queryScalar("COUNT($q)", $db);
}
/**
......@@ -207,11 +203,7 @@ class Query extends Component implements QueryInterface
*/
public function sum($q, $db = null)
{
$select = $this->select;
$this->select = ["SUM($q)"];
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
return $this->queryScalar("SUM($q)", $db);
}
/**
......@@ -224,11 +216,7 @@ class Query extends Component implements QueryInterface
*/
public function average($q, $db = null)
{
$select = $this->select;
$this->select = ["AVG($q)"];
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
return $this->queryScalar("AVG($q)", $db);
}
/**
......@@ -241,11 +229,7 @@ class Query extends Component implements QueryInterface
*/
public function min($q, $db = null)
{
$select = $this->select;
$this->select = ["MIN($q)"];
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
return $this->queryScalar("MIN($q)", $db);
}
/**
......@@ -258,11 +242,7 @@ class Query extends Component implements QueryInterface
*/
public function max($q, $db = null)
{
$select = $this->select;
$this->select = ["MAX($q)"];
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
return $this->queryScalar("MAX($q)", $db);
}
/**
......@@ -273,11 +253,23 @@ class Query extends Component implements QueryInterface
*/
public function exists($db = null)
{
return $this->queryScalar(new Expression('1'), $db) !== false;
}
/**
* Queries a scalar value by setting [[select]] first.
* Restores the value of select to make this query reusable.
* @param string|Expression $selectExpression
* @param Connection $db
* @return bool|string
*/
private function queryScalar($selectExpression, $db)
{
$select = $this->select;
$this->select = [new Expression('1')];
$this->select = [$selectExpression];
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar() !== false;
return $command->queryScalar();
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment