|
|
@ -130,6 +130,13 @@ class Query extends Component |
|
|
|
* For example, `array(':name' => 'Dan', ':age' => 31)`. |
|
|
|
* For example, `array(':name' => 'Dan', ':age' => 31)`. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public $params; |
|
|
|
public $params; |
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* @var string|callable $column the name of the column by which the query results should be indexed by. |
|
|
|
|
|
|
|
* This can also be a callable (e.g. anonymous function) that returns the index value based on the given |
|
|
|
|
|
|
|
* row data. For more details, see [[indexBy()]]. This property is only used by [[all()]]. |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public $indexBy; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Creates a DB command that can be used to execute this query. |
|
|
|
* Creates a DB command that can be used to execute this query. |
|
|
@ -147,6 +154,27 @@ class Query extends Component |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
|
|
|
|
* Sets the [[indexBy]] property. |
|
|
|
|
|
|
|
* @param string|callable $column the name of the column by which the query results should be indexed by. |
|
|
|
|
|
|
|
* This can also be a callable (e.g. anonymous function) that returns the index value based on the given |
|
|
|
|
|
|
|
* row data. The signature of the callable should be: |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* ~~~ |
|
|
|
|
|
|
|
* function ($row) |
|
|
|
|
|
|
|
* { |
|
|
|
|
|
|
|
* // return the index value corresponding to $row |
|
|
|
|
|
|
|
* } |
|
|
|
|
|
|
|
* ~~~ |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* @return Query the query object itself |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public function indexBy($column) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
$this->indexBy = $column; |
|
|
|
|
|
|
|
return $this; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Executes the query and returns all results as an array. |
|
|
|
* Executes the query and returns all results as an array. |
|
|
|
* @param Connection $db the database connection used to generate the SQL statement. |
|
|
|
* @param Connection $db the database connection used to generate the SQL statement. |
|
|
|
* If this parameter is not given, the `db` application component will be used. |
|
|
|
* If this parameter is not given, the `db` application component will be used. |
|
|
@ -154,7 +182,20 @@ class Query extends Component |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public function all($db = null) |
|
|
|
public function all($db = null) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return $this->createCommand($db)->queryAll(); |
|
|
|
$rows = $this->createCommand($db)->queryAll(); |
|
|
|
|
|
|
|
if ($this->indexBy === null) { |
|
|
|
|
|
|
|
return $rows; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$result = array(); |
|
|
|
|
|
|
|
foreach ($rows as $row) { |
|
|
|
|
|
|
|
if (is_string($this->indexBy)) { |
|
|
|
|
|
|
|
$key = $row[$this->indexBy]; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
$key = call_user_func($this->indexBy, $row); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$result[$key] = $row; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return $result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|