Blueprint
class Blueprint
Traits
Properties
| static protected array | $macros | The registered string macros. |
from Macroable |
| protected Connection | $connection | The database connection instance. |
|
| protected Grammar | $grammar | The schema grammar instance. |
|
| protected string | $table | The table the blueprint describes. |
|
| protected ColumnDefinition[] | $columns | The columns that should be added to the table. |
|
| protected Fluent[] | $commands | The commands that should be run for the table. |
|
| string|null | $engine | The storage engine that should be used for the table. |
|
| string|null | $charset | The default character set that should be used for the table. |
|
| string|null | $collation | The collation that should be used for the table. |
|
| bool | $temporary | Whether to make the table temporary. |
|
| string|null | $after | The column to add new columns after. |
|
| protected BlueprintState|null | $state | The blueprint state instance. |
Methods
Mix another object into the class.
Dynamically handle calls to the class.
Dynamically handle calls to the class.
Create a new schema blueprint.
Execute the blueprint against the database.
Get the raw SQL statements for the blueprint.
Ensure the commands on the blueprint are valid for the connection type.
Add the commands that are implied by the blueprint's state.
Add the index commands fluently specified on columns.
Add the fluent commands specified on any columns.
Add the alter commands if whenever needed.
Determine if the blueprint has a create command.
Specify the storage engine that should be used for the table.
Specify that the InnoDB storage engine should be used for the table (MySQL only).
Specify the character set that should be used for the table.
Specify the collation that should be used for the table.
Indicate that the table needs to be temporary.
Indicate that the table should be dropped if it exists.
Indicate that the given columns should be dropped.
Indicate that the given columns should be renamed.
Indicate that the given primary key should be dropped.
Indicate that the given unique key should be dropped.
Indicate that the given fulltext index should be dropped.
Indicate that the given spatial index should be dropped.
Indicate that the given foreign key should be dropped.
Indicate that the given column and foreign key should be dropped.
Indicate that the given foreign key should be dropped.
Indicate that the given foreign key should be dropped.
Indicate that the given indexes should be renamed.
Indicate that the timestamp columns should be dropped.
Indicate that the timestamp columns should be dropped.
Indicate that the soft delete column should be dropped.
Indicate that the soft delete column should be dropped.
Indicate that the remember token column should be dropped.
Indicate that the polymorphic columns should be dropped.
Specify the primary key(s) for the table.
Specify a unique index for the table.
Specify an index for the table.
Specify a fulltext index for the table.
Specify a spatial index for the table.
Specify a vector index for the table.
Specify a foreign key for the table.
Create a new auto-incrementing big integer column on the table (8-byte, 0 to 18,446,744,073,709,551,615).
Create a new auto-incrementing integer column on the table (4-byte, 0 to 4,294,967,295).
Create a new auto-incrementing integer column on the table (4-byte, 0 to 4,294,967,295).
Create a new auto-incrementing tiny integer column on the table (1-byte, 0 to 255).
Create a new auto-incrementing small integer column on the table (2-byte, 0 to 65,535).
Create a new auto-incrementing medium integer column on the table (3-byte, 0 to 16,777,215).
Create a new auto-incrementing big integer column on the table (8-byte, 0 to 18,446,744,073,709,551,615).
Create a new char column on the table.
Create a new string column on the table.
Create a new tiny text column on the table (up to 255 characters).
Create a new text column on the table (up to 65,535 characters / ~64 KB).
Create a new medium text column on the table (up to 16,777,215 characters / ~16 MB).
Create a new long text column on the table (up to 4,294,967,295 characters / ~4 GB).
Create a new integer (4-byte) column on the table.
Create a new tiny integer (1-byte) column on the table.
Create a new small integer (2-byte) column on the table.
Create a new medium integer (3-byte) column on the table.
Create a new big integer (8-byte) column on the table.
Create a new unsigned integer column on the table (4-byte, 0 to 4,294,967,295).
Create a new unsigned tiny integer column on the table (1-byte, 0 to 255).
Create a new unsigned small integer column on the table (2-byte, 0 to 65,535).
Create a new unsigned medium integer column on the table (3-byte, 0 to 16,777,215).
Create a new unsigned big integer column on the table (8-byte, 0 to 18,446,744,073,709,551,615).
Create a new unsigned big integer column on the table (8-byte, 0 to 18,446,744,073,709,551,615).
Create a foreign ID column for the given model.
Create a foreign UUID column for the given model.
Create a new float column on the table.
Create a new double column on the table.
Create a new decimal column on the table.
Create a new boolean column on the table.
Create a new enum column on the table.
Create a new set column on the table.
Create a new json column on the table.
Create a new jsonb column on the table.
Create a new date column on the table.
Create a new date-time column on the table.
Create a new date-time column (with time zone) on the table.
Create a new time column on the table.
Create a new time column (with time zone) on the table.
Create a new timestamp column on the table.
Create a new timestamp (with time zone) column on the table.
Add nullable creation and update timestamps to the table.
Add nullable creation and update timestamps to the table.
Add nullable creation and update timestampTz columns to the table.
Add nullable creation and update timestampTz columns to the table.
Add creation and update datetime columns to the table.
Add a "deleted at" timestamp for the table.
Add a "deleted at" timestampTz for the table.
Add a "deleted at" datetime column to the table.
Create a new year column on the table.
Create a new binary column on the table.
Create a new UUID column on the table.
Create a new UUID column on the table with a foreign key constraint.
Create a new ULID column on the table.
Create a new ULID column on the table with a foreign key constraint.
Create a new IP address column on the table.
Create a new MAC address column on the table.
Create a new geometry column on the table.
Create a new geography column on the table.
Create a new generated, computed column on the table.
Create a new vector column on the table.
Create a new tsvector column on the table.
Add the proper columns for a polymorphic table.
Add nullable columns for a polymorphic table.
Add the proper columns for a polymorphic table using numeric IDs (incremental).
Add nullable columns for a polymorphic table using numeric IDs (incremental).
Add the proper columns for a polymorphic table using UUIDs.
Add nullable columns for a polymorphic table using UUIDs.
Add the proper columns for a polymorphic table using ULIDs.
Add nullable columns for a polymorphic table using ULIDs.
Add the remember_token column to the table.
Create a new custom column on the table.
Create a new index command on the blueprint.
Create a new drop index command on the blueprint.
Create a default index name for the table.
Add a new column to the blueprint.
Remove a column from the schema blueprint.
Add a new command to the blueprint.
Create a new Fluent command.
Get the table the blueprint describes.
Get the columns on the blueprint.
Get the commands on the blueprint.
Get the state of the blueprint.
Get the columns on the blueprint that should be added.
Get the default time precision.
Flush all static state.
Details
in
Macroable at line 28
static void
macro(string $name, callable|object $macro)
Register a custom macro.
Boot-only. Macros persist in a static property for the worker lifetime and apply to every subsequent call on the macroable class.
in
Macroable at line 41
static void
mixin(object $mixin, bool $replace = true)
Mix another object into the class.
Boot-only. Delegates to macro() for each method; registered macros persist in a static property for the worker lifetime.
in
Macroable at line 57
static bool
hasMacro(string $name)
Check if macro is registered.
in
Macroable at line 68
static void
flushMacros()
Flush the existing macros.
Boot or tests only. Clears worker-wide macros; concurrent coroutines may resolve different methods depending on timing.
in
Macroable at line 78
static mixed
__callStatic(string $method, array $parameters)
Dynamically handle calls to the class.
in
Macroable at line 103
mixed
__call(string $method, array $parameters)
Dynamically handle calls to the class.
at line 89
__construct(Connection $connection, string $table, Closure|null $callback = null)
Create a new schema blueprint.
at line 103
void
build()
Execute the blueprint against the database.
at line 113
array
toSql()
Get the raw SQL statements for the blueprint.
at line 150
protected void
ensureCommandsAreValid()
Ensure the commands on the blueprint are valid for the connection type.
at line 160
protected void
addImpliedCommands()
Add the commands that are implied by the blueprint's state.
at line 180
protected void
addFluentIndexes()
Add the index commands fluently specified on columns.
at line 240
void
addFluentCommands()
Add the fluent commands specified on any columns.
at line 252
void
addAlterCommands()
Add the alter commands if whenever needed.
at line 290
bool
creating()
Determine if the blueprint has a create command.
at line 299
Fluent
create()
Indicate that the table needs to be created.
at line 307
void
engine(string $engine)
Specify the storage engine that should be used for the table.
at line 315
void
innoDb()
Specify that the InnoDB storage engine should be used for the table (MySQL only).
at line 323
void
charset(string $charset)
Specify the character set that should be used for the table.
at line 331
void
collation(string $collation)
Specify the collation that should be used for the table.
at line 339
void
temporary()
Indicate that the table needs to be temporary.
at line 347
Fluent
drop()
Indicate that the table should be dropped.
at line 355
Fluent
dropIfExists()
Indicate that the table should be dropped if it exists.
at line 363
Fluent
dropColumn(array|string $columns)
Indicate that the given columns should be dropped.
at line 373
Fluent
renameColumn(string $from, string $to)
Indicate that the given columns should be renamed.
at line 381
Fluent
dropPrimary(array|string|null $index = null)
Indicate that the given primary key should be dropped.
at line 389
Fluent
dropUnique(array|string $index)
Indicate that the given unique key should be dropped.
at line 397
Fluent
dropIndex(array|string $index)
Indicate that the given index should be dropped.
at line 405
Fluent
dropFullText(array|string $index)
Indicate that the given fulltext index should be dropped.
at line 413
Fluent
dropSpatialIndex(array|string $index)
Indicate that the given spatial index should be dropped.
at line 421
Fluent
dropForeign(array|string $index)
Indicate that the given foreign key should be dropped.
at line 429
Fluent
dropConstrainedForeignId(string $column)
Indicate that the given column and foreign key should be dropped.
at line 439
Fluent
dropForeignIdFor(object|string $model, string|null $column = null)
Indicate that the given foreign key should be dropped.
at line 451
Fluent
dropConstrainedForeignIdFor(object|string $model, string|null $column = null)
Indicate that the given foreign key should be dropped.
at line 463
Fluent
renameIndex(string $from, string $to)
Indicate that the given indexes should be renamed.
at line 471
void
dropTimestamps()
Indicate that the timestamp columns should be dropped.
at line 479
void
dropTimestampsTz()
Indicate that the timestamp columns should be dropped.
at line 487
void
dropSoftDeletes(string $column = 'deleted_at')
Indicate that the soft delete column should be dropped.
at line 495
void
dropSoftDeletesTz(string $column = 'deleted_at')
Indicate that the soft delete column should be dropped.
at line 503
void
dropRememberToken()
Indicate that the remember token column should be dropped.
at line 511
void
dropMorphs(string $name, string|null $indexName = null)
Indicate that the polymorphic columns should be dropped.
at line 525
Fluent
rename(string $to)
Rename the table to a given name.
at line 533
Fluent
primary(array|string $columns, string|null $name = null, string|null $algorithm = null)
Specify the primary key(s) for the table.
at line 541
Fluent
unique(array|string $columns, string|null $name = null, string|null $algorithm = null)
Specify a unique index for the table.
at line 549
Fluent
index(array|string $columns, string|null $name = null, string|null $algorithm = null)
Specify an index for the table.
at line 557
Fluent
fullText(array|string $columns, string|null $name = null, string|null $algorithm = null)
Specify a fulltext index for the table.
at line 565
Fluent
spatialIndex(array|string $columns, string|null $name = null, string|null $operatorClass = null)
Specify a spatial index for the table.
at line 573
Fluent
vectorIndex(string $column, string|null $name = null)
Specify a vector index for the table.
at line 585
Fluent
rawIndex(string $expression, string $name)
Specify a raw index for the table.
at line 593
ForeignKeyDefinition
foreign(array|string $columns, string|null $name = null)
Specify a foreign key for the table.
at line 607
ColumnDefinition
id(string $column = 'id')
Create a new auto-incrementing big integer column on the table (8-byte, 0 to 18,446,744,073,709,551,615).
at line 615
ColumnDefinition
increments(string $column)
Create a new auto-incrementing integer column on the table (4-byte, 0 to 4,294,967,295).
at line 623
ColumnDefinition
integerIncrements(string $column)
Create a new auto-incrementing integer column on the table (4-byte, 0 to 4,294,967,295).
at line 631
ColumnDefinition
tinyIncrements(string $column)
Create a new auto-incrementing tiny integer column on the table (1-byte, 0 to 255).
at line 639
ColumnDefinition
smallIncrements(string $column)
Create a new auto-incrementing small integer column on the table (2-byte, 0 to 65,535).
at line 647
ColumnDefinition
mediumIncrements(string $column)
Create a new auto-incrementing medium integer column on the table (3-byte, 0 to 16,777,215).
at line 655
ColumnDefinition
bigIncrements(string $column)
Create a new auto-incrementing big integer column on the table (8-byte, 0 to 18,446,744,073,709,551,615).
at line 663
ColumnDefinition
char(string $column, int|null $length = null)
Create a new char column on the table.
at line 673
ColumnDefinition
string(string $column, int|null $length = null)
Create a new string column on the table.
at line 683
ColumnDefinition
tinyText(string $column)
Create a new tiny text column on the table (up to 255 characters).
at line 691
ColumnDefinition
text(string $column)
Create a new text column on the table (up to 65,535 characters / ~64 KB).
at line 699
ColumnDefinition
mediumText(string $column)
Create a new medium text column on the table (up to 16,777,215 characters / ~16 MB).
at line 707
ColumnDefinition
longText(string $column)
Create a new long text column on the table (up to 4,294,967,295 characters / ~4 GB).
at line 716
ColumnDefinition
integer(string $column, bool $autoIncrement = false, bool $unsigned = false)
Create a new integer (4-byte) column on the table.
Range: -2,147,483,648 to 2,147,483,647 (signed) or 0 to 4,294,967,295 (unsigned).
at line 725
ColumnDefinition
tinyInteger(string $column, bool $autoIncrement = false, bool $unsigned = false)
Create a new tiny integer (1-byte) column on the table.
Range: -128 to 127 (signed) or 0 to 255 (unsigned).
at line 734
ColumnDefinition
smallInteger(string $column, bool $autoIncrement = false, bool $unsigned = false)
Create a new small integer (2-byte) column on the table.
Range: -32,768 to 32,767 (signed) or 0 to 65,535 (unsigned).
at line 743
ColumnDefinition
mediumInteger(string $column, bool $autoIncrement = false, bool $unsigned = false)
Create a new medium integer (3-byte) column on the table.
Range: -8,388,608 to 8,388,607 (signed) or 0 to 16,777,215 (unsigned).
at line 752
ColumnDefinition
bigInteger(string $column, bool $autoIncrement = false, bool $unsigned = false)
Create a new big integer (8-byte) column on the table.
Range: -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 (signed) or 0 to 18,446,744,073,709,551,615 (unsigned).
at line 760
ColumnDefinition
unsignedInteger(string $column, bool $autoIncrement = false)
Create a new unsigned integer column on the table (4-byte, 0 to 4,294,967,295).
at line 768
ColumnDefinition
unsignedTinyInteger(string $column, bool $autoIncrement = false)
Create a new unsigned tiny integer column on the table (1-byte, 0 to 255).
at line 776
ColumnDefinition
unsignedSmallInteger(string $column, bool $autoIncrement = false)
Create a new unsigned small integer column on the table (2-byte, 0 to 65,535).
at line 784
ColumnDefinition
unsignedMediumInteger(string $column, bool $autoIncrement = false)
Create a new unsigned medium integer column on the table (3-byte, 0 to 16,777,215).
at line 792
ColumnDefinition
unsignedBigInteger(string $column, bool $autoIncrement = false)
Create a new unsigned big integer column on the table (8-byte, 0 to 18,446,744,073,709,551,615).
at line 800
ForeignIdColumnDefinition
foreignId(string $column)
Create a new unsigned big integer column on the table (8-byte, 0 to 18,446,744,073,709,551,615).
at line 813
ForeignIdColumnDefinition
foreignIdFor(object|string $model, string|null $column = null)
Create a foreign ID column for the given model.
at line 843
ForeignIdColumnDefinition
foreignUuidFor(Model|string $model, string|null $column = null)
Create a foreign UUID column for the given model.
at line 857
ColumnDefinition
float(string $column, int $precision = 53)
Create a new float column on the table.
at line 865
ColumnDefinition
double(string $column)
Create a new double column on the table.
at line 873
ColumnDefinition
decimal(string $column, int $total = 8, int $places = 2)
Create a new decimal column on the table.
at line 881
ColumnDefinition
boolean(string $column)
Create a new boolean column on the table.
at line 889
ColumnDefinition
enum(string $column, array $allowed)
Create a new enum column on the table.
at line 899
ColumnDefinition
set(string $column, array $allowed)
Create a new set column on the table.
at line 907
ColumnDefinition
json(string $column)
Create a new json column on the table.
at line 915
ColumnDefinition
jsonb(string $column)
Create a new jsonb column on the table.
at line 923
ColumnDefinition
date(string $column)
Create a new date column on the table.
at line 931
ColumnDefinition
dateTime(string $column, int|null $precision = null)
Create a new date-time column on the table.
at line 941
ColumnDefinition
dateTimeTz(string $column, int|null $precision = null)
Create a new date-time column (with time zone) on the table.
at line 951
ColumnDefinition
time(string $column, int|null $precision = null)
Create a new time column on the table.
at line 961
ColumnDefinition
timeTz(string $column, int|null $precision = null)
Create a new time column (with time zone) on the table.
at line 971
ColumnDefinition
timestamp(string $column, int|null $precision = null)
Create a new timestamp column on the table.
at line 981
ColumnDefinition
timestampTz(string $column, int|null $precision = null)
Create a new timestamp (with time zone) column on the table.
at line 993
Collection
timestamps(int|null $precision = null)
Add nullable creation and update timestamps to the table.
at line 1008
Collection
nullableTimestamps(int|null $precision = null)
Add nullable creation and update timestamps to the table.
Alias for self::timestamps().
at line 1018
Collection
timestampsTz(int|null $precision = null)
Add nullable creation and update timestampTz columns to the table.
at line 1033
Collection
nullableTimestampsTz(int|null $precision = null)
Add nullable creation and update timestampTz columns to the table.
Alias for self::timestampsTz().
at line 1043
Collection
datetimes(int|null $precision = null)
Add creation and update datetime columns to the table.
at line 1054
ColumnDefinition
softDeletes(string $column = 'deleted_at', int|null $precision = null)
Add a "deleted at" timestamp for the table.
at line 1062
ColumnDefinition
softDeletesTz(string $column = 'deleted_at', int|null $precision = null)
Add a "deleted at" timestampTz for the table.
at line 1070
ColumnDefinition
softDeletesDatetime(string $column = 'deleted_at', int|null $precision = null)
Add a "deleted at" datetime column to the table.
at line 1078
ColumnDefinition
year(string $column)
Create a new year column on the table.
at line 1086
ColumnDefinition
binary(string $column, int|null $length = null, bool $fixed = false)
Create a new binary column on the table.
at line 1094
ColumnDefinition
uuid(string $column = 'uuid')
Create a new UUID column on the table.
at line 1102
ForeignIdColumnDefinition
foreignUuid(string $column)
Create a new UUID column on the table with a foreign key constraint.
at line 1113
ColumnDefinition
ulid(string $column = 'ulid', int|null $length = 26)
Create a new ULID column on the table.
at line 1121
ForeignIdColumnDefinition
foreignUlid(string $column, int|null $length = 26)
Create a new ULID column on the table with a foreign key constraint.
at line 1133
ColumnDefinition
ipAddress(string $column = 'ip_address')
Create a new IP address column on the table.
at line 1141
ColumnDefinition
macAddress(string $column = 'mac_address')
Create a new MAC address column on the table.
at line 1149
ColumnDefinition
geometry(string $column, string|null $subtype = null, int $srid = 0)
Create a new geometry column on the table.
at line 1157
ColumnDefinition
geography(string $column, string|null $subtype = null, int $srid = 4326)
Create a new geography column on the table.
at line 1165
ColumnDefinition
computed(string $column, string $expression)
Create a new generated, computed column on the table.
at line 1173
ColumnDefinition
vector(string $column, int|null $dimensions = null)
Create a new vector column on the table.
at line 1183
ColumnDefinition
tsvector(string $column)
Create a new tsvector column on the table.
at line 1191
void
morphs(string $name, string|null $indexName = null, string|null $after = null)
Add the proper columns for a polymorphic table.
at line 1205
void
nullableMorphs(string $name, string|null $indexName = null, string|null $after = null)
Add nullable columns for a polymorphic table.
at line 1219
void
numericMorphs(string $name, string|null $indexName = null, string|null $after = null)
Add the proper columns for a polymorphic table using numeric IDs (incremental).
at line 1233
void
nullableNumericMorphs(string $name, string|null $indexName = null, string|null $after = null)
Add nullable columns for a polymorphic table using numeric IDs (incremental).
at line 1249
void
uuidMorphs(string $name, string|null $indexName = null, string|null $after = null)
Add the proper columns for a polymorphic table using UUIDs.
at line 1263
void
nullableUuidMorphs(string $name, string|null $indexName = null, string|null $after = null)
Add nullable columns for a polymorphic table using UUIDs.
at line 1279
void
ulidMorphs(string $name, string|null $indexName = null, string|null $after = null)
Add the proper columns for a polymorphic table using ULIDs.
at line 1293
void
nullableUlidMorphs(string $name, string|null $indexName = null, string|null $after = null)
Add nullable columns for a polymorphic table using ULIDs.
at line 1309
ColumnDefinition
rememberToken()
Add the remember_token column to the table.
at line 1317
ColumnDefinition
rawColumn(string $column, string $definition)
Create a new custom column on the table.
at line 1325
Fluent
comment(string $comment)
Add a comment to the table.
at line 1333
protected Fluent
indexCommand(string $type, array|string $columns, string|null $index, string|null $algorithm = null, string|null $operatorClass = null)
Create a new index command on the blueprint.
at line 1353
protected Fluent
dropIndexCommand(string $command, string $type, array|string|null $index)
Create a new drop index command on the blueprint.
at line 1370
protected string
createIndexName(string $type, array $columns)
Create a default index name for the table.
at line 1388
ColumnDefinition
addColumn(string $type, string $name, array $parameters = [])
Add a new column to the blueprint.
at line 1403
protected ColumnDefinition
addColumnDefinition(ColumnDefinition $definition)
Add a new column definition to the blueprint.
at line 1424
void
after(string $column, Closure $callback)
Add the columns from the callback after the given column.
at line 1436
Blueprint
removeColumn(string $name)
Remove a column from the schema blueprint.
at line 1452
protected Fluent
addCommand(string $name, array $parameters = [])
Add a new command to the blueprint.
at line 1462
protected Fluent
createCommand(string $name, array $parameters = [])
Create a new Fluent command.
at line 1470
string
getTable()
Get the table the blueprint describes.
at line 1483
array
getColumns()
Get the columns on the blueprint.
at line 1493
array
getCommands()
Get the commands on the blueprint.
at line 1509
BlueprintState|null
getState()
Get the state of the blueprint.
at line 1519
array
getAddedColumns()
Get the columns on the blueprint that should be added.
at line 1532
protected int|null
defaultTimePrecision()
Get the default time precision.
at line 1540
static void
flushState()
Flush all static state.