SQLiteGrammar
class SQLiteGrammar 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[] | $modifiers | The possible column modifiers. |
|
| protected bool | $transactions | If this Grammar supports schema changes wrapped in a transaction. |
from Grammar |
| protected string[] | $fluentCommands | The commands to be executed outside of create or alter command. |
from Grammar |
| protected string[] | $serials | The columns available as serials. |
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.
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.
Compile a drop database if exists command.
Compile the query to determine the schemas.
Compile the query to determine if the given table exists.
Compile the query to determine the tables.
Compile the query to determine the views.
Compile the query to determine the user-defined types.
Compile the query to determine the columns.
Compile the query to determine the indexes.
Compile the query to determine the foreign keys.
Compile the query to determine the partitions of a table.
Compile the query to determine the parents of the given tables and of their ancestors.
Compile a create range partition command.
Compile the command to enable foreign key constraints.
Compile the command to disable foreign key constraints.
Compile a change column command into a series of SQL statements.
Add the column modifiers to the definition.
Get the command with a given name if it exists on the blueprint.
Determine if a command with a given name exists on the blueprint.
Format a value so that it can be used in "default" clauses.
Check if this Grammar supports schema changes wrapped in a transaction.
Get the commands to be compiled on the alter command.
Compile the query to determine the SQL text that describes the given object.
Compile the query to determine if the dbstat table is available.
Compile the query for legacy versions of SQLite to determine the tables.
Get the foreign key syntax for a table creation statement.
Compile alter table command into a series of SQL statements.
Determine whether stored table SQL declares AUTOINCREMENT.
Remove quoted values, identifiers, and comments before scanning stored table SQL.
Ensure the stored table definition can be reconstructed without semantic loss.
Compile table options retained from the stored definition.
Compile an index retained across a table rebuild.
Compile a stored index definition for the target schema and name.
Compile a drop table (if exists) command.
Compile the SQL needed to drop all tables.
Compile the SQL needed to drop all views.
Compile the SQL needed to rebuild the database.
Compile a drop spatial index command.
Get the SQL to get or set a PRAGMA value.
Get the SQL for a generated virtual column modifier.
Get the SQL for a generated stored column modifier.
Get the SQL for an auto-increment column modifier.
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 434
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 445
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 1282
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.
in
Grammar at line 255
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 44
string
compileCreateDatabase(string $name)
Compile a create database command.
in
Grammar at line 55
string
compileDropDatabaseIfExists(string $name)
Compile a drop database if exists command.
at line 73
string
compileSchemas()
Compile the query to determine the schemas.
at line 81
string|null
compileTableExists(string|null $schema, string $table)
Compile the query to determine if the given table exists.
at line 96
string
compileTables(string|array|null $schema, bool $withSize = false)
Compile the query to determine the tables.
at line 141
string
compileViews(string|array|null $schema)
Compile the query to determine the views.
in
Grammar at line 106
string
compileTypes(string|array|null $schema)
Compile the query to determine the user-defined types.
at line 153
string
compileColumns(string|null $schema, string $table)
Compile the query to determine the columns.
at line 170
string
compileIndexes(string|null $schema, string $table)
Compile the query to determine the indexes.
in
Grammar at line 130
string
compileVectorIndex(Blueprint $blueprint, Fluent $command)
Compile a vector index key command.
in
Grammar at line 140
string
compileDropVectorIndex(Blueprint $blueprint, Fluent $command)
Compile a drop vector index command.
at line 201
string
compileForeignKeys(string|null $schema, string $table)
Compile the query to determine the foreign keys.
in
Grammar at line 158
string
compilePartitions(string|null $schema, string $table)
Compile the query to determine the partitions of a table.
in
Grammar at line 168
string
compilePartitionAncestors(array $tables)
Compile the query to determine the parents of the given tables and of their ancestors.
in
Grammar at line 178
string
compileCreateRangePartition(string $table, string $partition, array $from, array $to)
Compile a create range partition command.
at line 863
string
compileEnableForeignKeyConstraints()
Compile the command to enable foreign key constraints.
at line 872
string
compileDisableForeignKeyConstraints()
Compile the command to disable foreign key constraints.
in
Grammar at line 204
array|string
compileRenameColumn(Blueprint $blueprint, Fluent $command)
Compile a rename column command.
at line 585
array|string
compileChange(Blueprint $blueprint, Fluent $command)
Compile a change column command into a series of SQL statements.
in
Grammar at line 227
string
compileFulltext(Blueprint $blueprint, Fluent $command)
Compile a fulltext index key command.
in
Grammar at line 235
string
compileDropFullText(Blueprint $blueprint, Fluent $command)
Compile a drop fulltext index command.
at line 648
string|null
compileForeign(Blueprint $blueprint, Fluent $command)
Compile a foreign key command.
at line 770
array|string|null
compileDropForeign(Blueprint $blueprint, Fluent $command)
Compile a drop foreign key command.
in
Grammar at line 293
protected array
getColumns(Blueprint $blueprint)
Compile the blueprint's added column definitions.
in
Grammar at line 309
protected string
getColumn(Blueprint $blueprint, Fluent $column)
Compile the column definition.
in
Grammar at line 322
protected string
getType(Fluent $column)
Get the SQL for the column data type.
in
Grammar at line 332
protected string
typeVector(Fluent $column)
Create the column definition for a vector type.
in
Grammar at line 340
protected string
typeTsvector(Fluent $column)
Create the column definition for a tsvector type.
in
Grammar at line 348
protected string
typeRaw(Fluent $column)
Create the column definition for a raw column type.
in
Grammar at line 356
protected string
addModifiers(string $sql, Blueprint $blueprint, Fluent $column)
Add the column modifiers to the definition.
in
Grammar at line 370
protected string
compileWhereNotNull(Fluent $command)
Compile the not-null predicate for a sparse index.
in
Grammar at line 381
protected Fluent|null
getCommandByName(Blueprint $blueprint, string $name)
Get the command with a given name if it exists on the blueprint.
in
Grammar at line 397
protected array
getCommandsByName(Blueprint $blueprint, string $name)
Get all of the commands with a given name.
in
Grammar at line 407
protected bool
hasCommand(Blueprint $blueprint, string $name)
Determine if a command with a given name exists on the blueprint.
in
Grammar at line 424
array
prefixArray(string $prefix, array $values)
Add a prefix to an array of values.
in
Grammar at line 455
protected string|int|float
getDefaultValue(mixed $value)
Format a value so that it can be used in "default" clauses.
in
Grammar at line 475
array
getFluentCommands()
Get the fluent commands for the grammar.
in
Grammar at line 483
bool
supportsSchemaTransactions()
Check if this Grammar supports schema changes wrapped in a transaction.
at line 37
array
getAlterCommands()
Get the commands to be compiled on the alter command.
at line 51
string
compileSqlCreateStatement(string|null $schema, string $name, string $type = 'table')
Compile the query to determine the SQL text that describes the given object.
at line 65
string
compileDbstatExists()
Compile the query to determine if the dbstat table is available.
at line 115
string
compileLegacyTables(string $schema, bool $withSize = false)
Compile the query for legacy versions of SQLite to determine the tables.
at line 220
string
compileCreate(Blueprint $blueprint, Fluent $command)
Compile a create table command.
at line 241
protected string
addForeignKeys(array $foreignKeys)
Get the foreign key syntax for a table creation statement.
at line 254
protected string
getForeignKey(Fluent $foreign)
Get the SQL for the foreign key.
at line 283
protected string|null
addPrimaryKeys(Fluent|null $primary)
Get the primary key syntax for a table creation statement.
at line 295
protected string
columnizeIndexedColumns(Fluent $index)
Convert indexed columns and their SQLite attributes to SQL.
at line 318
string
compileAdd(Blueprint $blueprint, Fluent $command)
Compile alter table commands for adding columns.
at line 332
array
compileAlter(Blueprint $blueprint, Fluent $command)
Compile alter table command into a series of SQL statements.
at line 445
bool
declaresAutoIncrement(string $sql)
| internal |
Determine whether stored table SQL declares AUTOINCREMENT.
at line 453
protected string
tableSqlForScanning(string $sql)
Remove quoted values, identifiers, and comments before scanning stored table SQL.
at line 468
protected void
ensureTableCanBeRebuilt(Blueprint $blueprint, string $sql)
Ensure the stored table definition can be reconstructed without semantic loss.
at line 498
protected string
compileTableOptions(string $sql)
Compile table options retained from the stored definition.
at line 524
protected string
compileRebuiltIndex(Blueprint $blueprint, Fluent $index)
Compile an index retained across a table rebuild.
at line 563
protected string
compileStoredIndex(Blueprint $blueprint, string $sql, string|null $name = null)
Compile a stored index definition for the target schema and name.
at line 595
string|null
compilePrimary(Blueprint $blueprint, Fluent $command)
Compile a primary key command.
at line 604
string
compileUnique(Blueprint $blueprint, Fluent $command)
Compile a unique key command.
at line 620
string
compileIndex(Blueprint $blueprint, Fluent $command)
Compile a plain index key command.
at line 639
void
compileSpatialIndex(Blueprint $blueprint, Fluent $command)
Compile a spatial index key command.
at line 665
string
compileDropIfExists(Blueprint $blueprint, Fluent $command)
Compile a drop table (if exists) command.
at line 673
string
compileDropAllTables(string|null $schema = null)
Compile the SQL needed to drop all tables.
at line 684
string
compileDropAllViews(string|null $schema = null)
Compile the SQL needed to drop all views.
at line 695
string
compileRebuild(string|null $schema = null)
Compile the SQL needed to rebuild the database.
at line 708
array|null
compileDropColumn(Blueprint $blueprint, Fluent $command)
Compile a drop column command.
at line 726
string|null
compileDropPrimary(Blueprint $blueprint, Fluent $command)
Compile a drop primary key command.
at line 735
string
compileDropUnique(Blueprint $blueprint, Fluent $command)
Compile a drop unique key command.
at line 743
string
compileDropIndex(Blueprint $blueprint, Fluent $command)
Compile a drop index command.
at line 759
void
compileDropSpatialIndex(Blueprint $blueprint, Fluent $command)
Compile a drop spatial index command.
at line 783
string
compileRename(Blueprint $blueprint, Fluent $command)
Compile a rename table command.
at line 796
array
compileRenameIndex(Blueprint $blueprint, Fluent $command)
Compile a rename index command.
at line 881
string
pragma(string $key, mixed $value = null)
Get the SQL to get or set a PRAGMA value.
at line 893
protected string
typeChar(Fluent $column)
Create the column definition for a char type.
at line 901
protected string
typeString(Fluent $column)
Create the column definition for a string type.
at line 909
protected string
typeTinyText(Fluent $column)
Create the column definition for a tiny text type.
at line 917
protected string
typeText(Fluent $column)
Create the column definition for a text type.
at line 925
protected string
typeMediumText(Fluent $column)
Create the column definition for a medium text type.
at line 933
protected string
typeLongText(Fluent $column)
Create the column definition for a long text type.
at line 941
protected string
typeInteger(Fluent $column)
Create the column definition for an integer type.
at line 949
protected string
typeBigInteger(Fluent $column)
Create the column definition for a big integer type.
at line 957
protected string
typeMediumInteger(Fluent $column)
Create the column definition for a medium integer type.
at line 965
protected string
typeTinyInteger(Fluent $column)
Create the column definition for a tiny integer type.
at line 973
protected string
typeSmallInteger(Fluent $column)
Create the column definition for a small integer type.
at line 981
protected string
typeFloat(Fluent $column)
Create the column definition for a float type.
at line 989
protected string
typeDouble(Fluent $column)
Create the column definition for a double type.
at line 997
protected string
typeDecimal(Fluent $column)
Create the column definition for a decimal type.
at line 1005
protected string
typeBoolean(Fluent $column)
Create the column definition for a boolean type.
at line 1013
protected string
typeEnum(Fluent $column)
Create the column definition for an enumeration type.
at line 1025
protected string
typeJson(Fluent $column)
Create the column definition for a json type.
at line 1033
protected string
typeJsonb(Fluent $column)
Create the column definition for a jsonb type.
at line 1041
protected string
typeDate(Fluent $column)
Create the column definition for a date type.
at line 1053
protected string
typeDateTime(Fluent $column)
Create the column definition for a date-time type.
at line 1065
protected string
typeDateTimeTz(Fluent $column)
Create the column definition for a date-time (with time zone) type.
Note: "SQLite does not have a storage class set aside for storing dates and/or times."
at line 1073
protected string
typeTime(Fluent $column)
Create the column definition for a time type.
at line 1081
protected string
typeTimeTz(Fluent $column)
Create the column definition for a time (with time zone) type.
at line 1089
protected string
typeTimestamp(Fluent $column)
Create the column definition for a timestamp type.
at line 1101
protected string
typeTimestampTz(Fluent $column)
Create the column definition for a timestamp (with time zone) type.
at line 1109
protected string
typeYear(Fluent $column)
Create the column definition for a year type.
at line 1121
protected string
typeBinary(Fluent $column)
Create the column definition for a binary type.
at line 1129
protected string
typeMediumBinary(Fluent $column)
Create the column definition for a medium binary type.
at line 1137
protected string
typeLongBinary(Fluent $column)
Create the column definition for a long binary type.
at line 1145
protected string
typeUuid(Fluent $column)
Create the column definition for a uuid type.
at line 1153
protected string
typeIpAddress(Fluent $column)
Create the column definition for an IP address type.
at line 1161
protected string
typeMacAddress(Fluent $column)
Create the column definition for a MAC address type.
at line 1169
protected string
typeGeometry(Fluent $column)
Create the column definition for a spatial Geometry type.
at line 1177
protected string
typeGeography(Fluent $column)
Create the column definition for a spatial Geography type.
at line 1187
protected string|null
modifyVirtualAs(Blueprint $blueprint, Fluent $column)
Get the SQL for a generated virtual column modifier.
at line 1207
protected string|null
modifyStoredAs(Blueprint $blueprint, Fluent $column)
Get the SQL for a generated stored column modifier.
at line 1227
protected string|null
modifyNullable(Blueprint $blueprint, Fluent $column)
Get the SQL for a nullable column modifier.
at line 1246
protected string|null
modifyDefault(Blueprint $blueprint, Fluent $column)
Get the SQL for a default column modifier.