When crafting a query, a
Query\Expression instance can be used in the
'selectPrimary' option. The expression wraps a string formatted according to a domain-specific language (DSL) for queries.
PostgreSqlQueryBuilder does not have any special knowledge what an
Expression is and how to parse it. Instead, the builder relies on visitors to extend existing functionality with new cases.
ExpressionQueryBuilderVisitor is registered in the builder and is responsible for parsing the expression and adjusting the options of the query. When an
Expression instance is encountered in this visitor, the expression is parsed into an abstract syntax tree (AST). The original query is modified so that all columns which are mentioned in the expression are included to be SELECT'ed. E.g., the expression
SUM("table"."column1" + "table"."column2") will instruct the query builder to generate SQL code for
"table"."column1" and `"table"."column2"