PostgresGrammar
class PostgresGrammar extends Grammar
Traits
Properties
| static protected array | $macros | The registered string macros. |
from Macroable |
| protected Connection | $connection | The connection used for escaping values. |
from Grammar |
| protected string[] | $operators | All of the available clause operators. |
|
| protected string[] | $bitwiseOperators | The grammar specific bitwise operators. |
|
| protected string[] | $selectComponents | The components that make up a select clause. |
from Grammar |
| static protected string[] | $customOperators | The Postgres grammar specific custom operators. |
|
| static protected bool | $cascadeTruncate | Indicates if the cascade option should be used when truncating. |
Methods
Mix another object into the class.
Dynamically handle calls to the class.
Dynamically handle calls to the class.
Wrap a table in keyword identifiers.
Wrap a table that has an alias.
Wrap the given JSON selector.
Convert an array of column names into a delimited string.
Get the appropriate query parameter place-holder for a value.
Escape a value for safe SQL embedding.
Flush all static state.
Split the given JSON selector into the field and the optional path and wrap them separately.
Wrap the given JSON path.
Wrap the given JSON path segment.
Arrange binding groups in the order used by a select statement.
Compile the query timeout for a complete select statement.
Format the where clause statements into one string.
Compile a "JSON contains" statement into SQL.
Compile a "JSON overlaps" statement into SQL.
Prepare the binding for a "JSON contains" statement.
Compile a "JSON contains key" statement into SQL.
Compile a "JSON length" statement into SQL.
Compile a "JSON value cast" statement into SQL.
Compile a vector distance expression for the given column.
Determine if the grammar supports vector distance queries.
Compile a single having clause.
Compile a having clause involving a bit operator.
Compile a having clause involving an expression.
Compile a row number clause.
Compile an "exists" subquery as a selectable column.
Compile an insert or ignore statement with a returning clause into SQL.
Compile an insert and get ID statement into SQL.
Compile an insert statement using a subquery into SQL.
Compile an insert ignore statement using a subquery into SQL.
Group update values by column in order of first appearance.
Compile an update statement without joins into SQL.
Compile an update statement with joins into SQL.
Compile an "upsert" statement into SQL.
Prepare the bindings for an update statement.
Prepare the bindings for an update statement with joins.
Prepare update values in column order, encoding JSON assignments.
Compile a delete statement without joins into SQL.
Compile a delete statement with joins into SQL.
Qualify the row identifier selected by a limited or joined write rewrite.
Prepare the bindings for a delete statement.
Compile a query to get the number of open connections for a database.
Compile the SQL statement to execute a savepoint rollback.
Wrap the given JSON selector for boolean values.
Wrap the given JSON boolean value.
Concatenate an array of segments, removing empties.
Remove the leading boolean from a statement.
Substitute the given bindings into the given raw SQL query.
Get the Postgres grammar specific operators.
Get an array of valid full text languages.
Compile a having clause involving a bitwise operator.
Prepare a JSON column being updated using the JSONB_SET function.
Prepare the bindings for an update statement.
Compile an update statement with joins or limit into SQL.
Compile a delete statement with joins or limit into SQL.
Compile the where clause matching the rows selected by a limited or joined write.
Wrap the attributes of the given JSON path.
Parse the given JSON path attribute for array keys.
Set any Postgres grammar specific custom operators.
Enable or disable the "cascade" option when compiling the truncate statement.
Details
in
Macroable at line 30
static void
macro(string $name, callable|object $macro)
Register a custom macro.
Macros persist in a static property for the worker lifetime and apply to every subsequent call on the macroable class.
in
Macroable at line 44
static void
mixin(object $mixin, bool $replace = true)
Mix another object into the class.
Delegates to macro() for each method; registered macros persist in a static property for the worker lifetime.
in
Macroable at line 61
static bool
hasMacro(string $name)
Check if macro is registered.
in
Macroable at line 72
static void
flushMacros()
Flush the existing macros.
Clears worker-wide macros; concurrent coroutines may resolve different methods depending on timing.
in
Macroable at line 83
static mixed
__callStatic(string $method, array $parameters)
Dynamically handle calls to the class.
in
Macroable at line 108
mixed
__call(string $method, array $parameters)
Dynamically handle calls to the class.
in
Grammar at line 24
__construct(Connection $connection)
Create a new grammar instance.
in
Grammar at line 35
array
wrapArray(array $values)
Wrap an array of values.
in
Grammar at line 43
string
wrapTable(Expression|string $table, string|null $prefix = null)
Wrap a table in keyword identifiers.
in
Grammar at line 76
string
wrapIdentifier(string $value)
Wrap a single identifier in keyword identifiers.
in
Grammar at line 84
string|int|float
wrap(Expression|string $value)
Wrap a value in keyword identifiers.
in
Grammar at line 110
protected string
wrapAliasedValue(string $value)
Wrap a value that has an alias.
in
Grammar at line 120
protected string
wrapAliasedTable(string $value, string|null $prefix = null)
Wrap a table that has an alias.
in
Grammar at line 134
protected string
wrapSegments(array $segments)
Wrap the given value segments.
in
Grammar at line 146
protected string
wrapValue(string $value)
Wrap a single string in keyword identifiers.
at line 625
protected string
wrapJsonSelector(string $value)
Wrap the given JSON selector.
in
Grammar at line 168
protected bool
isJsonSelector(string $value)
Determine if the given string is a JSON selector.
in
Grammar at line 178
string
columnize(array $columns)
Convert an array of column names into a delimited string.
in
Grammar at line 186
string
parameterize(array $values)
Create query parameter place-holders for an array.
in
Grammar at line 194
string|int|float
parameter(mixed $value)
Get the appropriate query parameter place-holder for a value.
in
Grammar at line 204
string
quoteString(string|array $value)
Quote the given string literal.
in
Grammar at line 216
string
escape(string|float|int|bool|null $value, bool $binary = false)
Escape a value for safe SQL embedding.
in
Grammar at line 224
bool
isExpression(mixed $value)
Determine if the given value is a raw expression.
in
Grammar at line 232
string|int|float
getValue(Expression|string|int|float $expression)
Transforms expressions to their scalar types.
in
Grammar at line 244
string
getDateFormat()
Get the format for database stored dates.
at line 773
static void
flushState()
Flush all static state.
in
CompilesJsonPaths at line 15
protected array
wrapJsonFieldAndPath(string $column)
Split the given JSON selector into the field and the optional path and wrap them separately.
in
CompilesJsonPaths at line 29
protected string
wrapJsonPath(string $value, string $delimiter = '->')
Wrap the given JSON path.
in
CompilesJsonPaths at line 44
protected string
wrapJsonPathSegment(string $segment)
Wrap the given JSON path segment.
in
Grammar at line 73
array
prepareBindingsForSelect(Builder $query)
Arrange binding groups in the order used by a select statement.
in
Grammar at line 94
protected string
compileSelectQuery(Builder $query)
Compile a select query without statement-level decoration.
Embedded fragments are assembled by their builder's grammar because connection-owned details such as table prefixes resolve through that grammar. They bypass compileSelect because only a complete executed statement carries statement-level decoration.
in
Grammar at line 145
protected string
compileSelectTimeout(Builder $query, string $sql)
Compile the query timeout for a complete select statement.
in
Grammar at line 153
protected array
compileComponents(Builder $query)
Compile the components necessary for a select clause.
in
Grammar at line 173
protected string
compileAggregate(Builder $query, array $aggregate)
Compile an aggregated select clause.
at line 229
protected string|null
compileColumns(Builder $query, array $columns)
Compile the "select *" portion of the query.
in
Grammar at line 213
protected string
compileFrom(Builder $query, Expression|string $table)
Compile the "from" portion of the query.
in
Grammar at line 221
protected string
compileJoins(Builder $query, array $joins)
Compile the "join" portions of the query.
at line 427
string
compileJoinLateral(JoinLateralClause $join, string $expression)
Compile a "lateral join" clause.
in
Grammar at line 255
protected bool
supportsStraightJoins()
Determine if the grammar supports straight joins.
in
Grammar at line 263
string
compileWheres(Builder $query)
Compile the "where" portions of the query.
in
Grammar at line 281
protected array
compileWheresToArray(Builder $query)
Get an array of all the where clauses for the query.
in
Grammar at line 291
protected string
concatenateWhereClauses(Builder $query, array $sql)
Format the where clause statements into one string.
in
Grammar at line 301
protected string
whereRaw(Builder $query, array $where)
Compile a raw where clause.
at line 56
protected string
whereBasic(Builder $query, array $where)
Compile a basic where clause.
in
Grammar at line 323
protected string
whereBinary(Builder $query, array $where)
Compile a "where binary" clause.
at line 73
protected string
whereBitwise(Builder $query, array $where)
Compile a bitwise operator where clause.
at line 85
protected string
whereLike(Builder $query, array $where)
Compile a "where like" clause.
in
Grammar at line 355
protected string
whereIn(Builder $query, array $where)
Compile a "where in" clause.
in
Grammar at line 367
protected string
whereNotIn(Builder $query, array $where)
Compile a "where not in" clause.
in
Grammar at line 381
protected string
whereNotInRaw(Builder $query, array $where)
Compile a "where not in raw" clause.
For safety, whereIntegerInRaw ensures this method is only used with integer values.
in
Grammar at line 395
protected string
whereInRaw(Builder $query, array $where)
Compile a "where in raw" clause.
For safety, whereIntegerInRaw ensures this method is only used with integer values.
in
Grammar at line 407
protected string
whereNull(Builder $query, array $where)
Compile a "where null" clause.
in
Grammar at line 415
protected string
whereNotNull(Builder $query, array $where)
Compile a "where not null" clause.
in
Grammar at line 423
protected string
whereNullSafeEquals(Builder $query, array $where)
Compile a "where null safe equals" clause.
in
Grammar at line 431
protected string
whereBetween(Builder $query, array $where)
Compile a "between" where clause.
in
Grammar at line 445
protected string
whereBetweenColumns(Builder $query, array $where)
Compile a "between" where clause.
in
Grammar at line 459
protected string
whereValueBetween(Builder $query, array $where)
Compile a "value between" where clause.
at line 97
protected string
whereDate(Builder $query, array $where)
Compile a "where date" clause.
at line 112
protected string
whereTime(Builder $query, array $where)
Compile a "where time" clause.
in
Grammar at line 489
protected string
whereDay(Builder $query, array $where)
Compile a "where day" clause.
in
Grammar at line 497
protected string
whereMonth(Builder $query, array $where)
Compile a "where month" clause.
in
Grammar at line 505
protected string
whereYear(Builder $query, array $where)
Compile a "where year" clause.
at line 127
protected string
dateBasedWhere(string $type, Builder $query, array $where)
Compile a date based where clause.
in
Grammar at line 523
protected string
whereColumn(Builder $query, array $where)
Compile a where clause comparing two columns.
in
Grammar at line 540
protected string
whereNested(Builder $query, array $where)
Compile a nested where clause.
in
Grammar at line 553
protected string
whereSub(Builder $query, array $where)
Compile a where condition with a sub-select.
in
Grammar at line 570
protected string
whereExists(Builder $query, array $where)
Compile a where exists clause.
in
Grammar at line 580
protected string
whereNotExists(Builder $query, array $where)
Compile a where not exists clause.
in
Grammar at line 590
protected string
whereRowValues(Builder $query, array $where)
Compile a where row values condition.
in
Grammar at line 602
protected string
whereJsonBoolean(Builder $query, array $where)
Compile a "where JSON boolean" clause.
in
Grammar at line 623
protected string
whereJsonContains(Builder $query, array $where)
Compile a "where JSON contains" clause.
at line 252
protected string
compileJsonContains(string $column, string $value)
Compile a "JSON contains" statement into SQL.
in
Grammar at line 646
protected string
whereJsonOverlaps(Builder $query, array $where)
Compile a "where JSON overlaps" clause.
in
Grammar at line 661
protected string
compileJsonOverlaps(string $column, string $value)
Compile a "JSON overlaps" statement into SQL.
in
Grammar at line 669
mixed
prepareBindingForJsonContains(mixed $binding)
Prepare the binding for a "JSON contains" statement.
in
Grammar at line 677
protected string
whereJsonContainsKey(Builder $query, array $where)
Compile a "where JSON contains key" clause.
at line 262
protected string
compileJsonContainsKey(string $column)
Compile a "JSON contains key" statement into SQL.
in
Grammar at line 699
protected string
whereJsonLength(Builder $query, array $where)
Compile a "where JSON length" clause.
at line 293
protected string
compileJsonLength(string $column, string $operator, string $value)
Compile a "JSON length" statement into SQL.
in
Grammar at line 721
string
compileJsonValueCast(string $value)
Compile a "JSON value cast" statement into SQL.
at line 137
string
whereFullText(Builder $query, array $where)
Compile a "where fulltext" clause.
in
Grammar at line 739
string
whereExpression(Builder $query, array $where)
Compile a clause based on an expression.
at line 213
string
compileVectorDistanceExpression(Expression|string $column)
Compile a vector distance expression for the given column.
at line 221
bool
supportsVectorDistance()
Determine if the grammar supports vector distance queries.
in
Grammar at line 765
protected string
compileGroups(Builder $query, array $groups)
Compile the "group by" portions of the query.
in
Grammar at line 773
protected string
compileHavings(Builder $query)
Compile the "having" portions of the query.
at line 303
protected string
compileHaving(array $having)
Compile a single having clause.
in
Grammar at line 803
protected string
compileBasicHaving(array $having)
Compile a basic having clause.
in
Grammar at line 815
protected string
compileHavingBetween(array $having)
Compile a "between" having clause.
in
Grammar at line 831
protected string
compileHavingNull(array $having)
Compile a having null clause.
in
Grammar at line 841
protected string
compileHavingNotNull(array $having)
Compile a having not null clause.
in
Grammar at line 851
protected string
compileHavingBit(array $having)
Compile a having clause involving a bit operator.
in
Grammar at line 863
protected string
compileHavingExpression(array $having)
Compile a having clause involving an expression.
in
Grammar at line 871
protected string
compileNestedHavings(array $having)
Compile a nested having clause.
in
Grammar at line 879
protected string
compileOrders(Builder $query, array $orders)
Compile the "order by" portions of the query.
in
Grammar at line 891
protected array
compileOrdersToArray(Builder $query, array $orders)
Compile the query orders to an array.
in
Grammar at line 909
protected string
compileInOrderOf(array $order)
Compile an "in order of" clause.
in
Grammar at line 925
string
compileRandom(string|int $seed)
Compile the random statement into SQL.
in
Grammar at line 933
protected string
compileLimit(Builder $query, int $limit)
Compile the "limit" portions of the query.
in
Grammar at line 941
protected string
compileGroupLimit(Builder $query)
Compile a group limit clause.
in
Grammar at line 979
protected string
compileRowNumber(string $partition, string $orders)
Compile a row number clause.
in
Grammar at line 989
protected string
compileOffset(Builder $query, int $offset)
Compile the "offset" portions of the query.
in
Grammar at line 997
protected string
compileUnions(Builder $query)
Compile the "union" queries attached to the main query.
in
Grammar at line 1023
protected string
compileUnionOffset(Builder $query, int $offset)
Compile the offset applied to the complete union.
in
Grammar at line 1031
protected string
compileUnion(array $union)
Compile a single union statement.
in
Grammar at line 1044
protected string
wrapUnion(string $sql)
Wrap a union subquery in parentheses.
in
Grammar at line 1052
protected string
compileUnionAggregate(Builder $query)
Compile a union aggregate query into SQL.
in
Grammar at line 1077
string
compileExistsColumn(string $sql)
Compile an "exists" subquery as a selectable column.
in
Grammar at line 1085
string
compileInsert(Builder $query, array $values)
Compile an insert statement into SQL.
at line 343
string
compileInsertOrIgnore(Builder $query, array $values)
Compile an insert ignore statement into SQL.
at line 351
string
compileInsertOrIgnoreReturning(Builder $query, array $values, array $returning, array|null $uniqueBy)
Compile an insert or ignore statement with a returning clause into SQL.
at line 372
string
compileInsertGetId(Builder $query, array $values, string|null $sequence)
Compile an insert and get ID statement into SQL.
in
Grammar at line 1143
string
compileInsertUsing(Builder $query, array $columns, string $sql)
Compile an insert statement using a subquery into SQL.
at line 364
string
compileInsertOrIgnoreUsing(Builder $query, array $columns, string $sql)
Compile an insert ignore statement using a subquery into SQL.
at line 380
string
compileUpdate(Builder $query, array $values)
Compile an update statement into SQL.
at line 392
protected string
compileUpdateColumns(Builder $query, array $values)
Compile the columns for an update statement.
in
Grammar at line 1202
protected array
groupJsonColumnsForUpdate(array $values)
Group update values by column in order of first appearance.
in
Grammar at line 1219
protected string
compileUpdateWithoutJoins(Builder $query, string $table, string $columns, string $where)
Compile an update statement without joins into SQL.
in
Grammar at line 1227
protected string
compileUpdateWithJoins(Builder $query, string $table, string $columns, string $where)
Compile an update statement with joins into SQL.
at line 409
string
compileUpsert(Builder $query, array $values, array $uniqueBy, array $update)
Compile an "upsert" statement into SQL.
at line 559
array
prepareBindingsForUpdate(array $bindings, array $values)
Prepare the bindings for an update statement.
in
Grammar at line 1265
array
prepareBindingsForUpdateWithJoins(array $bindings, array $values)
Prepare the bindings for an update statement with joins.
in
Grammar at line 1273
protected array
prepareValueBindingsForUpdate(array $values)
Prepare update values in column order, encoding JSON assignments.
at line 572
string
compileDelete(Builder $query)
Compile a delete statement into SQL.
in
Grammar at line 1315
protected string
compileDeleteWithoutJoins(Builder $query, string $table, string $where)
Compile a delete statement without joins into SQL.
in
Grammar at line 1323
protected string
compileDeleteWithJoins(Builder $query, string $table, string $where)
Compile a delete statement with joins into SQL.
in
Grammar at line 1337
protected string
qualifyRowIdentifier(Builder $query, string $identifier)
Qualify the row identifier selected by a limited or joined write rewrite.
in
Grammar at line 1357
array
prepareBindingsForDelete(array $bindings)
Prepare the bindings for a delete statement.
at line 609
array
compileTruncate(Builder $query)
Compile a truncate table statement into SQL.
at line 327
protected string
compileLock(Builder $query, bool|string $value)
Compile the lock into SQL.
at line 617
string|null
compileThreadCount()
Compile a query to get the number of open connections for a database.
in
Grammar at line 1391
bool
supportsSavepoints()
Determine if the grammar supports savepoints.
in
Grammar at line 1399
string
compileSavepoint(string $name)
Compile the SQL statement to define a savepoint.
in
Grammar at line 1407
string
compileSavepointRollBack(string $name)
Compile the SQL statement to execute a savepoint rollback.
at line 645
protected string
wrapJsonBooleanSelector(string $value)
Wrap the given JSON selector for boolean values.
at line 659
protected string
wrapJsonBooleanValue(string $value)
Wrap the given JSON boolean value.
in
Grammar at line 1431
protected string
concatenate(array $segments)
Concatenate an array of segments, removing empties.
in
Grammar at line 1441
protected string
removeLeadingBoolean(string $value)
Remove the leading boolean from a statement.
at line 714
string
substituteBindingsIntoRawSql(string $sql, array $bindings)
Substitute the given bindings into the given raw SQL query.
at line 734
array
getOperators()
Get the Postgres grammar specific operators.
in
Grammar at line 1506
array
getBitwiseOperators()
Get the grammar specific bitwise operators.
at line 175
protected array
validFullTextLanguages()
Get an array of valid full text languages.
at line 315
protected string
compileHavingBitwise(array $having)
Compile a having clause involving a bitwise operator.
at line 435
protected string
compileJsonUpdateColumn(string $key, array $values)
Prepare a JSON column being updated using the JSONB_SET function.
at line 455
string
compileUpdateFrom(Builder $query, array $values)
Compile an update from statement into SQL.
at line 491
protected string
compileUpdateWheres(Builder $query)
Compile the additional where clauses for updates with joins.
at line 514
protected string
compileUpdateJoinWheres(Builder $query)
Compile the "join" clause where clauses for an update.
at line 535
array
prepareBindingsForUpdateFrom(array $bindings, array $values)
Prepare the bindings for an update statement.
at line 547
protected string
compileUpdateWithJoinsOrLimit(Builder $query, array $values)
Compile an update statement with joins or limit into SQL.
at line 584
protected string
compileDeleteWithJoinsOrLimit(Builder $query)
Compile a delete statement with joins or limit into SQL.
at line 594
protected string
compileRowIdentifierWhere(Builder $query)
Compile the where clause matching the rows selected by a limited or joined write.
at line 667
protected array
wrapJsonPathAttributes(array $path)
Wrap the attributes of the given JSON path.
at line 694
protected array
parseJsonPathArrayKeys(string $attribute)
Parse the given JSON path attribute for array keys.
at line 747
static void
customOperators(array $operators)
Set any Postgres grammar specific custom operators.
The operator list persists in a static property for the worker lifetime and applies to every Postgres query built across all coroutines.
at line 761
static void
cascadeOnTruncate(bool $value = true)
Enable or disable the "cascade" option when compiling the truncate statement.
The flag persists in a static property for the worker lifetime and applies to every truncate() across all coroutines.