When creating a column from the Blueprint
object, a Column
object is returned. This column
gives you access to a few modifier commands to further configure the column.
Attach a comment to the column.
Argument | Type | Required | Default | Description |
comment | string |
| ​ | The comment text. |
Example:
SchemaBuilder
schema.create( "users", function( table ) {table.integer( "age" ).comment( "Do not lie about your age" );} );
SQL (MySQL)
CREATE TABLE `users` (`age` INTEGER NOT NULL COMMENT `Do not lie about your age`)
Sets a default value for the column.
Note: The value is not escaped, allowing you to specify functions like NOW()
or literals like 1
. To specify a literal string, wrap the value in quotes.
Argument | Type | Required | Default | Description |
value | string |
| ​ | The default value. |
Example:
SchemaBuilder
schema.create( "users", function( table ) {table.boolean( "is_active" ).default( 1 );table.timestamp( "created_date" ).default( "NOW()" );table.string( "country" ).default( "'USA'" );} );
SQL (MySQL)
CREATE TABLE `users` (`is_active` TINYINT(1) DEFAULT 1,`created_date` TIMESTAMP DEFAULT NOW(),`country` VARCHAR(255) DEFAULT 'USA')
Sets the column to allow null values.
Argument | Type | Required | Default | Description |
No arguments | ​ | ​ | ​ | ​ |
All columns are created as NOT NULL
by default. As such, there is no notNull
method.
Example:
SchemaBuilder
schema.create( "users", function( table ) {table.timestamp( "last_logged_in" ).nullable()} );
SQL (MySQL)
CREATE TABLE `users` (`last_logged_in` TIMESTAMP)
Adds the column as a primary key for the table.
Argument | Type | Required | Default | Description |
indexName | string |
| A derived name built from the table name and column name. | The name to use for the primary key constraint. |
The primaryKey
method returns a TableIndex
instance. Additional methods can be chained off of it.
Example:
SchemaBuilder
schema.create( "users", function( table ) {table.uuid( "id" ).primaryKey();} );
SQL (MySQL)
CREATE TABLE `users` (`id` CHAR(35) NOT NULL,CONSTAINT `pk_users_id` PRIMARY KEY (`id`))
Creates a foreign key constraint for the column.
Argument | Type | Required | Default | Description |
value | string |
| ​ | The default value. |
IMPORTANT: Additional configuration of the foreign constraint is done by calling methods on the returned TableIndex
instance.​
Example:
SchemaBuilder
schema.create( "users", function( table ) {table.unsignedInteger( "country_id" ).references( "id" ).onTable( "countries" ).onDelete( "cascade" );} );
SQL (MySQL)
CREATE TABLE `users` (`country_id` INTEGER UNSIGNED NOT NULL,CONSTRAINT `fk_users_country_id` FOREIGN KEY (`country_id`) REFERENCES `countries` (`id`) ON UPDATE NO ACTION ON DELETE CASCADE)
Sets the column as unsigned.
Argument | Type | Required | Default | Description |
No arguments | ​ | ​ | ​ | ​ |
Example:
SchemaBuilder
schema.create( "users", function( table ) {table.integer( age" ).unsigned();} );
SQL (MySQL)
CREATE TABLE `users` (`age` INTEGER UNSIGNED NOT NULL)
Sets the column to have the UNIQUE constraint.
Argument | Type | Required | Default | Description |
No arguments | ​ | ​ | ​ | ​ |
Example:
SchemaBuilder
schema.create( "email", function( table ) {table.string( email" ).unique();} );
SQL (MySQL)
CREATE TABLE `users` (`email` VARCHAR(255) NOT NULL UNIQUE)
Sets the column to have the a default value of CURRENT_TIMESTAMP
.
Argument | Type | Required | Default | Description |
No arguments | ​ | ​ | ​ | ​ |
Example:
SchemaBuilder
schema.create( "posts", function( table ) {table.timestamp( "posted_date" ).withCurrent();} );
SQL (Postgres)
CREATE TABLE "posts" ("posted_date" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP)