/** * @param Fetcher $fetcher * @param string $mainTableAlias * @return string[] */ protected function getQueryParameters(Fetcher $fetcher = null, $mainTableAlias = 'ref') { $select = ''; $from = ''; if ($fetcher != null) { $selectedColumns = array(); $selectedJoins = array(); $columns = $fetcher->getFilterColumns(); foreach ($columns as $column) { list($selectedColumns, $selectedJoins) = $this->getSelectedColumnsJoins($column, $mainTableAlias, $selectedColumns, $selectedJoins); } $sorts = $fetcher->getSorts(); foreach ($sorts as $column => $sortOrder) { list($selectedColumns, $selectedJoins) = $this->getSelectedColumnsJoins($column, $mainTableAlias, $selectedColumns, $selectedJoins); } $toUse = array(); foreach ($selectedColumns as $key => $value) { if ($mainTableAlias . '.id' !== $value) { $toUse[$key] = $value; } } if (!empty($toUse)) { $select = ', ' . implode(', ', $toUse); } if (!empty($selectedJoins)) { $joins = $this->getJoins(); $selectedJoinsSql = array_intersect_key($joins, $selectedJoins); $from = implode(' ', $selectedJoinsSql); } } return array($select, $from); }