Browse Source

make Query reuseable

fixes #1545
tags/2.0.0-beta
Carsten Brandt 11 years ago
parent
commit
124a73a598
  1. 13
      framework/yii/db/ActiveQuery.php
  2. 30
      framework/yii/db/Query.php

13
framework/yii/db/ActiveQuery.php

@ -123,6 +123,9 @@ class ActiveQuery extends Query implements ActiveQueryInterface
}
if ($this->sql === null) {
$select = $this->select;
$from = $this->from;
if ($this->from === null) {
$tableName = $modelClass::tableName();
if ($this->select === null && !empty($this->join)) {
@ -130,8 +133,14 @@ class ActiveQuery extends Query implements ActiveQueryInterface
}
$this->from = [$tableName];
}
list ($this->sql, $this->params) = $db->getQueryBuilder()->build($this);
list ($sql, $params) = $db->getQueryBuilder()->build($this);
$this->select = $select;
$this->from = $from;
} else {
$sql = $this->sql;
$params = $this->params;
}
return $db->createCommand($this->sql, $this->params);
return $db->createCommand($sql, $params);
}
}

30
framework/yii/db/Query.php

@ -190,8 +190,11 @@ class Query extends Component implements QueryInterface
*/
public function count($q = '*', $db = null)
{
$select = $this->select;
$this->select = ["COUNT($q)"];
return $this->createCommand($db)->queryScalar();
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
}
/**
@ -204,8 +207,11 @@ class Query extends Component implements QueryInterface
*/
public function sum($q, $db = null)
{
$select = $this->select;
$this->select = ["SUM($q)"];
return $this->createCommand($db)->queryScalar();
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
}
/**
@ -218,8 +224,11 @@ class Query extends Component implements QueryInterface
*/
public function average($q, $db = null)
{
$select = $this->select;
$this->select = ["AVG($q)"];
return $this->createCommand($db)->queryScalar();
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
}
/**
@ -232,8 +241,11 @@ class Query extends Component implements QueryInterface
*/
public function min($q, $db = null)
{
$select = $this->select;
$this->select = ["MIN($q)"];
return $this->createCommand($db)->queryScalar();
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
}
/**
@ -246,8 +258,11 @@ class Query extends Component implements QueryInterface
*/
public function max($q, $db = null)
{
$select = $this->select;
$this->select = ["MAX($q)"];
return $this->createCommand($db)->queryScalar();
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar();
}
/**
@ -258,8 +273,11 @@ class Query extends Component implements QueryInterface
*/
public function exists($db = null)
{
$select = $this->select;
$this->select = [new Expression('1')];
return $this->scalar($db) !== false;
$command = $this->createCommand($db);
$this->select = $select;
return $command->queryScalar() !== false;
}
/**

Loading…
Cancel
Save