yii\db\Query::queryScalar PHP Méthode

queryScalar() protected méthode

Restores the value of select to make this query reusable.
protected queryScalar ( string | yii\db\Expression $selectExpression, Connection | null $db ) : boolean | string
$selectExpression string | yii\db\Expression
$db Connection | null
Résultat boolean | string
    protected function queryScalar($selectExpression, $db)
    {
        if ($this->emulateExecution) {
            return null;
        }
        $select = $this->select;
        $limit = $this->limit;
        $offset = $this->offset;
        $this->select = [$selectExpression];
        $this->limit = null;
        $this->offset = null;
        $command = $this->createCommand($db);
        $this->select = $select;
        $this->limit = $limit;
        $this->offset = $offset;
        if (empty($this->groupBy) && empty($this->having) && empty($this->union) && !$this->distinct) {
            return $command->queryScalar();
        } else {
            return (new Query())->select([$selectExpression])->from(['c' => $this])->createCommand($command->db)->queryScalar();
        }
    }

Usage Example

Exemple #1
0
 /**
  * @inheritdoc
  */
 protected function queryScalar($selectExpression, $db)
 {
     if ($this->sql === null) {
         return parent::queryScalar($selectExpression, $db);
     }
     /* @var $modelClass ActiveRecord */
     $modelClass = $this->modelClass;
     if ($db === null) {
         $db = $modelClass::getDb();
     }
     return (new Query())->select([$selectExpression])->from(['c' => "({$this->sql})"])->params($this->params)->createCommand($db)->queryScalar();
 }