Skip to content
Column Types Reference

Column Types Reference

Type Mapping

The schema builder maps 37 generic column types to database-specific SQL types.

Generic TypeSQLiteMySQLPostgreSQL
ColTypeIncrementsINTEGERINT UNSIGNED AUTO_INCREMENTSERIAL
ColTypeBigIncrementsINTEGERBIGINT UNSIGNED AUTO_INCREMENTBIGSERIAL
ColTypeTinyIntINTEGERTINYINTSMALLINT
ColTypeSmallIntINTEGERSMALLINTSMALLINT
ColTypeMediumIntINTEGERMEDIUMINTINTEGER
ColTypeIntegerINTEGERINTINTEGER
ColTypeBigIntINTEGERBIGINTBIGINT
ColTypeUnsignedIntegerINTEGERINT UNSIGNEDINTEGER
ColTypeUnsignedBigIntegerINTEGERBIGINT UNSIGNEDBIGINT
ColTypeStringVARCHARVARCHARVARCHAR
ColTypeCharCHARCHARCHAR
ColTypeTextTEXTTEXTTEXT
ColTypeMediumTextTEXTMEDIUMTEXTTEXT
ColTypeLongTextTEXTLONGTEXTTEXT
ColTypeBooleanINTEGERTINYINT(1)BOOLEAN
ColTypeDateDATEDATEDATE
ColTypeDateTimeDATETIMEDATETIMETIMESTAMP
ColTypeDateTimeTzDATETIMEDATETIMETIMESTAMPTZ
ColTypeTimeTIMETIMETIME
ColTypeTimestampDATETIMETIMESTAMPTIMESTAMP
ColTypeTimestampTzDATETIMETIMESTAMPTIMESTAMPTZ
ColTypeDecimalnumericDECIMALNUMERIC
ColTypeDoubleREALDOUBLEDOUBLE PRECISION
ColTypeFloatREALFLOATREAL
ColTypeBinaryBLOBBLOBBYTEA
ColTypeUUIDTEXTCHAR(36)UUID
ColTypeULIDTEXTCHAR(26)CHAR(26)
ColTypeEnumTEXTENUM(‘a’,‘b’)VARCHAR + CHECK
ColTypeJsonTEXTJSONJSONB

Column Modifier SQL

ModifierSQLiteMySQLPostgreSQL
NOT NULLNOT NULLNOT NULLNOT NULL
DEFAULT valDEFAULT valDEFAULT valDEFAULT val
UNIQUEUNIQUEUNIQUEUNIQUE
PRIMARY KEYPRIMARY KEYPRIMARY KEYPRIMARY KEY
AUTO_INCREMENTAUTOINCREMENTAUTO_INCREMENT(SERIAL/BIGSERIAL)
UNSIGNEDUNSIGNED

Best Practices

  • Use BigIncrements("id") for primary keys in production — it supports up to 9 quintillion rows
  • Use Timestamps() for created_at/updated_at tracking
  • Use SoftDeletes() for soft deletion support
  • For enums in PostgreSQL, the builder uses VARCHAR with CHECK constraints
  • Always wrap string defaults in extra quotes: Default("'active'")