public function column($db = null)
{
$originSelect = (array) $this->select;
if (!isset($originSelect['_id']) && array_search('_id', $originSelect, true) === false) {
$this->select['_id'] = false;
}
if (is_string($this->indexBy) && $originSelect && count($originSelect) === 1) {
$this->select[] = $this->indexBy;
}
$cursor = $this->buildCursor($db);
$rows = $this->fetchRows($cursor, true);
if (empty($rows)) {
return [];
}
$results = [];
foreach ($rows as $row) {
$value = reset($row);
if ($this->indexBy === null) {
$results[] = $value;
} else {
if ($this->indexBy instanceof \Closure) {
$results[call_user_func($this->indexBy, $row)] = $value;
} else {
$results[$row[$this->indexBy]] = $value;
}
}
}
return $results;
}