/** * Resolve the given columns supposed to be fetched * * This notifies the repository about each desired query column. * * @param mixed $target The target where to look for each column * @param array $desiredColumns Pass null or an empty array to require all query columns * * @return array The desired columns indexed by their respective alias */ protected function prepareQueryColumns($target, array $desiredColumns = null) { $this->customAliases = array(); if (empty($desiredColumns)) { $columns = $this->repository->requireAllQueryColumns($target); } else { $columns = array(); foreach ($desiredColumns as $customAlias => $columnAlias) { $resolvedColumn = $this->repository->requireQueryColumn($target, $columnAlias, $this); if ($resolvedColumn !== $columnAlias) { if (is_string($customAlias)) { $columns[$customAlias] = $resolvedColumn; $this->customAliases[$customAlias] = $columnAlias; } else { $columns[$columnAlias] = $resolvedColumn; } } elseif (is_string($customAlias)) { $columns[$customAlias] = $columnAlias; $this->customAliases[$customAlias] = $columnAlias; } else { $columns[] = $columnAlias; } } } return $columns; }
/** * Return this repository's query columns of the given table mapped to their respective aliases * * @param array|string $table * * @return array * * @throws ProgrammingError In case $table does not exist */ public function requireAllQueryColumns($table) { return parent::requireAllQueryColumns($this->removeTablePrefix($this->clearTableAlias($table))); }