Class QueryCompiler
Responsible for compiling a Query object into its SQL representation
Property Summary
-
$_deleteParts protected
array
The list of query clauses to traverse for generating a DELETE statement
-
$_insertParts protected
array
The list of query clauses to traverse for generating an INSERT statement
-
$_orderedUnion protected
bool
Indicate whether or not this query dialect supports ordered unions.
-
$_selectParts protected
array
The list of query clauses to traverse for generating a SELECT statement
-
$_templates protected
array
List of sprintf templates that will be used for compiling the SQL for this query. There are some clauses that can be built as just as the direct concatenation of the internal parts, those are listed here.
-
$_updateParts protected
array
The list of query clauses to traverse for generating an UPDATE statement
Method Summary
-
_buildFromPart() protected
Helper function used to build the string representation of a FROM clause, it constructs the tables list taking care of aliasing and converting expression objects to string.
-
_buildInsertPart() protected
Builds the SQL fragment for INSERT INTO.
-
_buildJoinPart() protected
Helper function used to build the string representation of multiple JOIN clauses, it constructs the joins list taking care of aliasing and converting expression objects to string in both the table to be joined and the conditions to be used.
-
_buildSelectPart() protected
Helper function used to build the string representation of a SELECT clause, it constructs the field list taking care of aliasing and converting expression objects to string. This function also constructs the DISTINCT clause for the query.
-
_buildSetPart() protected
Helper function to generate SQL for SET expressions.
-
_buildUnionPart() protected
Builds the SQL string for all the UNION clauses in this query, when dealing with query objects it will also transform them using their configured SQL dialect.
-
_buildValuesPart() protected
Builds the SQL fragment for INSERT INTO.
-
_sqlCompiler() protected
Returns a callable object that can be used to compile a SQL string representation of this query.
-
_stringifyExpressions() protected
Helper function used to covert ExpressionInterface objects inside an array into their string representation.
-
compile() public
Returns the SQL representation of the provided query after generating the placeholders for the bound values using the provided generator
Method Detail
_buildFromPart() ¶ protected
_buildFromPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $generator): string
Helper function used to build the string representation of a FROM clause, it constructs the tables list taking care of aliasing and converting expression objects to string.
Parameters
-
array
$parts list of tables to be transformed to string
-
Cake\Database\Query
$query The query that is being compiled
-
Cake\Database\ValueBinder
$generator the placeholder generator to be used in expressions
Returns
string
_buildInsertPart() ¶ protected
_buildInsertPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $generator): string
Builds the SQL fragment for INSERT INTO.
Parameters
-
array
$parts The insert parts.
-
Cake\Database\Query
$query The query that is being compiled
-
Cake\Database\ValueBinder
$generator the placeholder generator to be used in expressions
Returns
string
_buildJoinPart() ¶ protected
_buildJoinPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $generator): string
Helper function used to build the string representation of multiple JOIN clauses, it constructs the joins list taking care of aliasing and converting expression objects to string in both the table to be joined and the conditions to be used.
Parameters
-
array
$parts list of joins to be transformed to string
-
Cake\Database\Query
$query The query that is being compiled
-
Cake\Database\ValueBinder
$generator the placeholder generator to be used in expressions
Returns
string
_buildSelectPart() ¶ protected
_buildSelectPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $generator): string
Helper function used to build the string representation of a SELECT clause, it constructs the field list taking care of aliasing and converting expression objects to string. This function also constructs the DISTINCT clause for the query.
Parameters
-
array
$parts list of fields to be transformed to string
-
Cake\Database\Query
$query The query that is being compiled
-
Cake\Database\ValueBinder
$generator the placeholder generator to be used in expressions
Returns
string
_buildSetPart() ¶ protected
_buildSetPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $generator): string
Helper function to generate SQL for SET expressions.
Parameters
-
array
$parts List of keys & values to set.
-
Cake\Database\Query
$query The query that is being compiled
-
Cake\Database\ValueBinder
$generator the placeholder generator to be used in expressions
Returns
string
_buildUnionPart() ¶ protected
_buildUnionPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $generator): string
Builds the SQL string for all the UNION clauses in this query, when dealing with query objects it will also transform them using their configured SQL dialect.
Parameters
-
array
$parts list of queries to be operated with UNION
-
Cake\Database\Query
$query The query that is being compiled
-
Cake\Database\ValueBinder
$generator the placeholder generator to be used in expressions
Returns
string
_buildValuesPart() ¶ protected
_buildValuesPart(array $parts, Cake\Database\Query $query, Cake\Database\ValueBinder $generator): string
Builds the SQL fragment for INSERT INTO.
Parameters
-
array
$parts The values parts.
-
Cake\Database\Query
$query The query that is being compiled
-
Cake\Database\ValueBinder
$generator the placeholder generator to be used in expressions
Returns
string
_sqlCompiler() ¶ protected
_sqlCompiler(string $sql, Cake\Database\Query $query, Cake\Database\ValueBinder $generator): Closure
Returns a callable object that can be used to compile a SQL string representation of this query.
Parameters
-
string
$sql initial sql string to append to
-
Cake\Database\Query
$query The query that is being compiled
-
Cake\Database\ValueBinder
$generator The placeholder and value binder object
Returns
Closure
_stringifyExpressions() ¶ protected
_stringifyExpressions(array $expressions, Cake\Database\ValueBinder $generator): array
Helper function used to covert ExpressionInterface objects inside an array into their string representation.
Parameters
-
array
$expressions list of strings and ExpressionInterface objects
-
Cake\Database\ValueBinder
$generator the placeholder generator to be used in expressions
Returns
array
compile() ¶ public
compile(Cake\Database\Query $query, Cake\Database\ValueBinder $generator): Closure
Returns the SQL representation of the provided query after generating the placeholders for the bound values using the provided generator
Parameters
-
Cake\Database\Query
$query The query that is being compiled
-
Cake\Database\ValueBinder
$generator the placeholder generator to be used in expressions
Returns
Closure
Property Detail
$_deleteParts ¶ protected
The list of query clauses to traverse for generating a DELETE statement
Type
array
$_insertParts ¶ protected
The list of query clauses to traverse for generating an INSERT statement
Type
array
$_orderedUnion ¶ protected
Indicate whether or not this query dialect supports ordered unions.
Overridden in subclasses.
Type
bool
$_selectParts ¶ protected
The list of query clauses to traverse for generating a SELECT statement
Type
array
$_templates ¶ protected
List of sprintf templates that will be used for compiling the SQL for this query. There are some clauses that can be built as just as the direct concatenation of the internal parts, those are listed here.
Type
array
$_updateParts ¶ protected
The list of query clauses to traverse for generating an UPDATE statement
Type
array