/** * Modified version that default to do the same as the original, but allows via a * third parameter to retrieve the result as array instead of active records. This * solves a joining problem. Usage via findAllAsArray method * * Performs the actual DB query and populates the AR objects with the query result. * This method is mainly internally used by other AR query methods. * @param CDbCriteria $criteria the query criteria * @param boolean $all whether to return all data * @return mixed the AR objects populated with the query result * @since 1.1.7 */ protected function query($criteria, $all = false, $asAR = true) { if ($asAR === true) { return parent::query($criteria, $all); } else { $this->beforeFind(); $this->applyScopes($criteria); if (!$all) { $criteria->limit = 1; } $command = $this->getCommandBuilder()->createFindCommand($this->getTableSchema(), $criteria); //For debug, this command will get you the generated sql: //echo $command->getText(); return $all ? $command->queryAll() : $command->queryRow(); } }