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.
Example:
SchemaBuilder
Copy schema .create ( "users" , function ( table ) {
table .integer ( "age" ) .comment ( "Do not lie about your age" );
} );
SQL (MySQL)
Copy 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.
Example:
SchemaBuilder
Copy schema.create( "users", function( table ) {
table.boolean( "is_active" ).default( 1 );
table.timestamp( "created_date" ).default( "NOW()" );
table.string( "country" ).default( "'USA'" );
} );
SQL (MySQL)
Copy 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.
All columns are created as NOT NULL
by default. As such, there is no notNull
method.
Example:
SchemaBuilder
Copy schema.create( "users", function( table ) {
table.timestamp( "last_logged_in" ).nullable()
} );
SQL (MySQL)
Copy CREATE TABLE ` users ` (
`last_logged_in` TIMESTAMP
)
primaryKey
Adds the column as a primary key for the table.
The primaryKey
method returns a TableIndex
instance. Additional methods can be chained off of it.
Example:
SchemaBuilder
Copy schema.create( "users", function( table ) {
table.uuid( "id" ).primaryKey();
} );
SQL (MySQL)
Copy CREATE TABLE ` users ` (
`id` CHAR ( 35 ) NOT NULL ,
CONSTAINT `pk_users_id` PRIMARY KEY ( `id` )
)
references
Creates a foreign key constraint for the column.
IMPORTANT: Additional configuration of the foreign constraint is done by calling methods on the returned TableIndex
instance.
Example:
SchemaBuilder
Copy schema.create( "users", function( table ) {
table.unsignedInteger( "country_id" ).references( "id" ).onTable( "countries" ).onDelete( "cascade" );
} );
SQL (MySQL)
Copy 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.
Example:
SchemaBuilder
Copy schema.create( "users", function( table ) {
table.integer( age" ).unsigned();
} );
SQL (MySQL)
Copy CREATE TABLE ` users ` (
`age` INTEGER UNSIGNED NOT NULL
)
unique
Sets the column to have the UNIQUE constraint.
Example:
SchemaBuilder
Copy schema.create( "email", function( table ) {
table.string( email" ).unique();
} );
SQL (MySQL)
Copy CREATE TABLE ` users ` (
`email` VARCHAR ( 255 ) NOT NULL UNIQUE
)
withCurrent
Sets the column to have the a default value of CURRENT_TIMESTAMP
.
Example:
SchemaBuilder
Copy schema .create ( "posts" , function ( table ) {
table .timestamp ( "posted_date" ) .withCurrent ();
} );
SQL (Postgres)
Copy CREATE TABLE " posts " (
"posted_date" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
)