class SqlBuilder

Builds SQL queries for the Explorer layer.

Properties

protected $tableName
protected $conventions
protected $delimitedTable
protected string[] $select
protected string[] $where
protected array<string,string[]> $joinCondition
protected array<string,string|string[]> $conditions
protected array<string,array> $parameters
protected string[] $order
protected $limit
protected $offset
protected $group
protected $having
protected array<string,string> $reservedTableNames
protected array<string,string> $aliases
protected $currentAlias

Methods

__construct(string $tableName, Explorer $explorer)

No description

string
getTableName()

No description

string
buildInsertQuery()

No description

string
buildUpdateQuery()

No description

string
buildDeleteQuery()

No description

string
getSelectQueryHash(array|null $columns = null)

Returns select query hash for caching.

string
buildSelectQuery(array|null $columns = null)

Returns SQL query.

array
getParameters()

No description

void
importConditions(SqlBuilder $builder)

Copies WHERE conditions and aliases from another builder.

bool
importGroupConditions(SqlBuilder $builder)

Copies GROUP BY and HAVING clauses from another builder. Returns true if HAVING was present.

void
addSelect(string $columns, mixed ...$params)

Adds SELECT clause, more calls append to the end.

array
getSelect()

No description

void
resetSelect()

No description

bool
addWhere(string|array $condition, mixed ...$params)

Adds WHERE condition, more calls append with AND.

bool
addJoinCondition(string $tableChain, string|array $condition, mixed ...$params)

Adds JOIN condition.

bool
addCondition(string|array $condition, array $params, array $conditions, array $conditionsParameters)

Normalizes and appends a condition with its parameters. Deduplicates identical conditions.

array
getConditions()

No description

void
addAlias(string $chain, string $alias)

Adds alias AS.

void
checkUniqueTableName(string $tableName, string $chain)

Ensures a table alias is not used for two different chains, throwing on conflict.

void
addOrder(string $columns, mixed ...$params)

Adds ORDER BY clause, more calls append to the end.

void
setOrder(array $columns, array $parameters)

No description

array
getOrder()

No description

void
setLimit(int|null $limit, int|null $offset)

Sets LIMIT/OFFSET clause.

int|null
getLimit()

No description

int|null
getOffset()

No description

void
setGroup(string $columns, mixed ...$params)

Sets GROUP BY and HAVING clause.

string
getGroup()

No description

void
setHaving(string $having, mixed ...$params)

No description

string
getHaving()

No description

string
buildSelect(array $columns)

No description

array
parseJoinConditions(array $joins, array $joinConditions)

No description

void
getSortedJoins(string $table, array $leftJoinDependency, array $tableJoins, array $finalJoins)

No description

void
parseJoins(array $joins, string $query)

No description

string
parseJoinsCb(array $joins, array $match)

No description

string
buildQueryJoins(array $joins, array $leftJoinConditions = [])

No description

array
buildJoinConditions()

No description

string
buildConditions()

No description

string
buildQueryEnd()

No description

string
tryDelimite(string $s)

Delimits lowercase identifiers in a SQL fragment while leaving uppercase keywords untouched.

bool
addConditionComposition(array $columns, array $parameters, array $conditions, array $conditionsParameters)

Adds a multi-column IN condition using OR expansion or tuple syntax depending on driver support.

Details

at line 73
__construct(string $tableName, Explorer $explorer)

No description

Parameters

string $tableName
Explorer $explorer

at line 85
string getTableName()

No description

Return Value

string

at line 91
string buildInsertQuery()

No description

Return Value

string

at line 97
string buildUpdateQuery()

No description

Return Value

string

at line 113
string buildDeleteQuery()

No description

Return Value

string

at line 128
string getSelectQueryHash(array|null $columns = null)

Returns select query hash for caching.

Parameters

array|null $columns

Return Value

string

at line 162
string buildSelectQuery(array|null $columns = null)

Returns SQL query.

Parameters

array|null $columns

Return Value

string

at line 212
array getParameters()

No description

Return Value

array

at line 232
void importConditions(SqlBuilder $builder)

Copies WHERE conditions and aliases from another builder.

Parameters

SqlBuilder $builder

Return Value

void

at line 247
bool importGroupConditions(SqlBuilder $builder)

Copies GROUP BY and HAVING clauses from another builder. Returns true if HAVING was present.

Parameters

SqlBuilder $builder

Return Value

bool

at line 267
void addSelect(string $columns, mixed ...$params)

Adds SELECT clause, more calls append to the end.

Parameters

string $columns
mixed ...$params

Return Value

void

at line 275
array getSelect()

No description

Return Value

array

at line 281
void resetSelect()

No description

Return Value

void

at line 292
bool addWhere(string|array $condition, mixed ...$params)

Adds WHERE condition, more calls append with AND.

Parameters

string|array $condition
mixed ...$params

Return Value

bool

at line 302
bool addJoinCondition(string $tableChain, string|array $condition, mixed ...$params)

Adds JOIN condition.

Parameters

string $tableChain
string|array $condition
mixed ...$params

Return Value

bool

at line 321
protected bool addCondition(string|array $condition, array $params, array $conditions, array $conditionsParameters)

Normalizes and appends a condition with its parameters. Deduplicates identical conditions.

Returns true if the condition was added, false if it was a duplicate.

Parameters

string|array $condition
array $params
array $conditions
array $conditionsParameters

Return Value

bool

at line 468
array getConditions()

No description

Return Value

array

at line 477
void addAlias(string $chain, string $alias)

Adds alias AS.

Parameters

string $chain
string $alias

Return Value

void

at line 491
protected void checkUniqueTableName(string $tableName, string $chain)

Ensures a table alias is not used for two different chains, throwing on conflict.

Parameters

string $tableName
string $chain

Return Value

void

at line 512
void addOrder(string $columns, mixed ...$params)

Adds ORDER BY clause, more calls append to the end.

Parameters

string $columns
mixed ...$params

Return Value

void

at line 523
void setOrder(array $columns, array $parameters)

No description

Parameters

array $columns
array $parameters

Return Value

void

at line 531
array getOrder()

No description

Return Value

array

at line 540
void setLimit(int|null $limit, int|null $offset)

Sets LIMIT/OFFSET clause.

Parameters

int|null $limit
int|null $offset

Return Value

void

at line 547
int|null getLimit()

No description

Return Value

int|null

at line 553
int|null getOffset()

No description

Return Value

int|null

at line 562
void setGroup(string $columns, mixed ...$params)

Sets GROUP BY and HAVING clause.

Parameters

string $columns
mixed ...$params

Return Value

void

at line 569
string getGroup()

No description

Return Value

string

at line 575
void setHaving(string $having, mixed ...$params)

No description

Parameters

string $having
mixed ...$params

Return Value

void

at line 582
string getHaving()

No description

Return Value

string

at line 592
protected string buildSelect(array $columns)

No description

Parameters

array $columns

Return Value

string

at line 603
protected array parseJoinConditions(array $joins, array $joinConditions)

No description

Parameters

array $joins
array $joinConditions

Return Value

array

at line 644
protected void getSortedJoins(string $table, array $leftJoinDependency, array $tableJoins, array $finalJoins)

No description

Parameters

string $table
array $leftJoinDependency
array $tableJoins
array $finalJoins

Return Value

void

at line 698
protected void parseJoins(array $joins, string $query)

No description

Parameters

array $joins
string $query

Return Value

void

at line 718
string parseJoinsCb(array $joins, array $match)

No description

Parameters

array $joins
array $match

Return Value

string

at line 841
protected string buildQueryJoins(array $joins, array $leftJoinConditions = [])

No description

Parameters

array $joins
array $leftJoinConditions

Return Value

string

at line 858
protected array buildJoinConditions()

No description

Return Value

array

table chain => condition SQL

at line 869
protected string buildConditions()

No description

Return Value

string

at line 877
protected string buildQueryEnd()

No description

Return Value

string

at line 899
protected string tryDelimite(string $s)

Delimits lowercase identifiers in a SQL fragment while leaving uppercase keywords untouched.

Parameters

string $s

Return Value

string

at line 918
protected bool addConditionComposition(array $columns, array $parameters, array $conditions, array $conditionsParameters)

Adds a multi-column IN condition using OR expansion or tuple syntax depending on driver support.

Parameters

array $columns
array $parameters
array $conditions
array $conditionsParameters

Return Value

bool