Class QueryCompiler

Responsible for compiling a Query object into its SQL representation

Namespace: Cake\Database

Properties 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.

  • bool

    Indicate whether aliases in SELECT clause need to be always quoted.

  • $_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.

  • _buildModifierPart() protected

    Builds the SQL modifier fragment

  • _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.

  • _buildUpdatePart() protected

    Builds the SQL fragment for UPDATE.

  • _buildValuesPart() protected

    Builds the SQL fragment for INSERT INTO.

  • _buildWindowPart() protected

    Helper function to build the string representation of a window clause.

  • _buildWithPart() protected

    Helper function used to build the string representation of a WITH clause, it constructs the CTE definitions list and generates the RECURSIVE keyword when required.

  • _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)

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)

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

SQL fragment.

_buildJoinPart() protected

_buildJoinPart(array $parts, \Cake\Database\Query $query, \Cake\Database\ValueBinder $generator)

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

_buildModifierPart() protected

_buildModifierPart(array $parts, \Cake\Database\Query $query, \Cake\Database\ValueBinder $generator)

Builds the SQL modifier fragment

Parameters

array $parts

The query modifier 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

SQL fragment.

_buildSelectPart() protected

_buildSelectPart(array $parts, \Cake\Database\Query $query, \Cake\Database\ValueBinder $generator)

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)

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)

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

_buildUpdatePart() protected

_buildUpdatePart(array $parts, \Cake\Database\Query $query, \Cake\Database\ValueBinder $generator)

Builds the SQL fragment for UPDATE.

Parameters

array $parts

The update 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

SQL fragment.

_buildValuesPart() protected

_buildValuesPart(array $parts, \Cake\Database\Query $query, \Cake\Database\ValueBinder $generator)

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

SQL fragment.

_buildWindowPart() protected

_buildWindowPart(array $parts, \Cake\Database\Query $query, \Cake\Database\ValueBinder $generator)

Helper function to build the string representation of a window clause.

Parameters

array $parts

List of windows 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

_buildWithPart() protected

_buildWithPart(array $parts, \Cake\Database\Query $query, \Cake\Database\ValueBinder $generator)

Helper function used to build the string representation of a WITH clause, it constructs the CTE definitions list and generates the RECURSIVE keyword when required.

Parameters

array $parts

List of CTEs 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

_sqlCompiler() protected

_sqlCompiler(string $sql, \Cake\Database\Query $query, \Cake\Database\ValueBinder $generator)

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, bool $wrap)

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

bool $wrap optional

Whether to wrap each expression object with parenthesis

Returns

array

compile() public

compile(\Cake\Database\Query $query, \Cake\Database\ValueBinder $generator)

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

string

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

$_quotedSelectAliases protected

Indicate whether aliases in SELECT clause need to be always quoted.

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

© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/4.1/class-Cake.Database.QueryCompiler.html