protected function buildQuery()
{
$query = '';
foreach ($this->clauses as $clause => $separator) {
if ($this->clauseNotEmpty($clause)) {
if (is_string($separator)) {
$query .= " {$clause} " . implode($separator, $this->statements[$clause]);
} elseif ($separator === null) {
$query .= " {$clause} " . $this->statements[$clause];
} elseif (is_callable($separator)) {
$query .= call_user_func($separator);
} else {
throw new Exception("Clause '{$clause}' is incorrectly set to '{$separator}'.");
}
}
}
return trim($query);
}
/** * @return string */ protected function buildQuery() { # first create extra join from statements with columns with referenced tables $statementsWithReferences = array('WHERE', 'SELECT', 'GROUP BY', 'ORDER BY'); foreach ($statementsWithReferences as $clause) { if (array_key_exists($clause, $this->statements)) { $this->statements[$clause] = array_map(array($this, 'createUndefinedJoins'), $this->statements[$clause]); } } return parent::buildQuery(); }