Column Modifiers

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.

comment

Attach a comment to the column.

Argument

Type

Required

Default

Description

comment

string

true

​

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`
)

default

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

true

​

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'
)

nullable

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
)

primaryKey

Adds the column as a primary key for the table.

Argument

Type

Required

Default

Description

indexName

string

false

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`)
)

references

Creates a foreign key constraint for the column.

Argument

Type

Required

Default

Description

value

string

true

​

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
)

unsigned

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
)

unique

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
)

withCurrent

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
)