/** * Returns the SQL representation of the provided query after generating * the placeholders for the bound values using the provided generator * * @param \Cake\Database\Query $query The query that is being compiled * @param \Cake\Database\ValueBinder $generator the placeholder generator to be used in expressions * @return \Closure */ public function compile(Query $query, ValueBinder $generator) { $sql = ''; $type = $query->type(); $query->traverse($this->_sqlCompiler($sql, $query, $generator), $this->{'_' . $type . 'Parts'}); return $sql; }
/** * Returns the SQL representation of the provided query after generating * the placeholders for the bound values using the provided generator * * @param \Cake\Database\Query $query The query that is being compiled * @param \Cake\Database\ValueBinder $generator the placeholder generator to be used in expressions * @return \Closure */ public function compile(Query $query, ValueBinder $generator) { $sql = ''; $type = $query->type(); $query->traverse($this->_sqlCompiler($sql, $query, $generator), $this->{'_' . $type . 'Parts'}); // Propagate bound parameters from sub-queries if the // placeholders can be found in the SQL statement. if ($query->valueBinder() !== $generator) { foreach ($query->valueBinder()->bindings() as $binding) { $placeholder = ':' . $binding['placeholder']; if (preg_match('/' . $placeholder . '(?:\\W|$)/', $sql) > 0) { $generator->bind($placeholder, $binding['value'], $binding['type']); } } } return $sql; }