테이블 옵션을 정의하기 위해서 스키마 빌더의 다음 명령어를 사용할 수 있습니다:
명령어 | 설명 |
---|---|
$table->engine = 'InnoDB'; |
테이블 엔진을 지정합니다.(MySQL). |
$table->charset = 'utf8'; |
테이블의 기본 케릭터셋을 지정합니다.(MySQL). |
$table->collation = 'utf8_unicode_ci'; |
테이블의 기본 collation을 지정합니다.(MySQL). |
$table->temporary(); |
임시 테이블을 생성 (SQL Server 제외). |
Of course, the schema builder contains a variety of column types that you may specify when building your tables:
당연하게도, 스키마 빌더는 테이블을 만들 때 이를 지정할 수 있는 다양한 컬럼 타입들을 가지고 있습니다:
명령 | 설명 |
---|---|
$table->bigIncrements('id'); |
자동으로 증가하는(auto increment) UNSIGNED BIGINT (primary key) 컬럼. |
$table->bigInteger('votes'); |
BIGINT 컬럼. |
$table->binary('data'); |
BLOB 컬럼. |
$table->boolean('confirmed'); |
BOOLEAN 컬럼. |
$table->char('name', 100); |
옵션값을 길이로 하는 CHAR 컬럼. |
$table->date('created_at'); |
DATE 컬럼. |
$table->dateTime('created_at'); |
DATETIME 컬럼. |
$table->dateTimeTz('created_at'); |
DATETIME (타임존을 가지는) 컬럼. |
$table->decimal('amount', 8, 2); |
전체 자릿수와 소수점 자릿수를 지정한 DECIMAL 컬럼. |
$table->double('amount', 8, 2); |
전체 자릿수와 소수점 자릿수를 지정한 DOUBLE 컬럼. |
$table->enum('level', ['easy', 'hard']); |
ENUM 컬럼. |
$table->float('amount', 8, 2); |
전체 자릿수와 소수점 자릿수를 지정한 FLOAT 컬럼. |
$table->geometry('positions'); |
GEOMETRY 컬럼. |
$table->geometryCollection('positions'); |
GEOMETRYCOLLECTION 컬럼. |
$table->increments('id'); |
자동으로 증가하는(auto increment) UNSIGNED INTEGER (primary key) 컬럼. |
$table->integer('votes'); |
INTEGER 컬럼. |
$table->ipAddress('visitor'); |
IP 주소 컬럼. |
$table->json('options'); |
JSON 컬럼. |
$table->jsonb('options'); |
JSONB 컬럼. |
$table->lineString('positions'); |
LINESTRING 컬럼. |
$table->longText('description'); |
LONGTEXT 컬럼. |
$table->macAddress('device'); |
MAC address 컬럼. |
$table->mediumIncrements('id'); |
자동으로 증가하는(auto increment) UNSIGNED MEDIUMINT (primary key) 컬럼. |
$table->mediumInteger('votes'); |
MEDIUMINT 컬럼. |
$table->mediumText('description'); |
MEDIUMTEXT 컬럼. |
$table->morphs('taggable'); |
UNSIGNED BIGINT 의 taggable_id 컬럼과 taggable_type VARCHAR 컬럼을 추가. |
$table->multiLineString('positions'); |
MULTILINESTRING 컬럼. |
$table->multiPoint('positions'); |
MULTIPOINT 컬럼. |
$table->multiPolygon('positions'); |
MULTIPOLYGON 컬럼. |
$table->nullableMorphs('taggable'); |
nullable (null 값이 허용되는) morphs() 컬럼 버전. |
$table->nullableTimestamps(); |
timestamps() 의 별칭입니다. |
$table->point('position'); |
POINT 컬럼. |
$table->polygon('positions'); |
POLYGON 컬럼. |
$table->rememberToken(); |
nullable (null 값이 허용되는) remember_token VARCHAR(100) 컬럼. |
$table->smallIncrements('id'); |
자동으로 증가하는(auto increment) UNSIGNED SMALLINT (primary key) 컬럼. |
$table->smallInteger('votes'); |
SMALLINT 컬럼. |
$table->softDeletes(); |
soft delete 를 위한 nullable (null 값이 허용되는) deleted_at TIMESTAMP 컬럼. |
$table->softDeletesTz(); |
soft delete 를 위한 nullable (null 값이 허용되는) deleted_at TIMESTAMP (타임존을 가지는) |
$table->string('name', 100); |
옵션값을 길이로 하는 VARCHAR 컬럼. |
$table->text('description'); |
TEXT 컬럼. |
$table->time('sunrise'); |
TIME 컬럼. |
$table->timeTz('sunrise'); |
TIME (타임존을 가지는) 컬럼. |
$table->timestamp('added_on'); |
TIMESTAMP 컬럼. |
$table->timestampTz('added_on'); |
TIMESTAMP (타임존을 가지는) 컬럼. |
$table->timestamps(); |
nullable (null 값이 허용되는) created_at 와 updated_at TIMESTAMP 컬럼. |
$table->timestampsTz(); |
nullable (null 값이 허용되는) created_at 와 updated_at TIMESTAMP (타임존을 가지는) 컬럼. |
$table->tinyIncrements('id'); |
자동으로 증가하는(auto increment) UNSIGNED TINYINT (primary key) 컬럼. |
$table->tinyInteger('votes'); |
TINYINT 컬럼. |
$table->unsignedBigInteger('votes'); |
UNSIGNED BIGINT 컬럼. |
$table->unsignedDecimal('amount', 8, 2); |
전체 자릿수와 소수점 자릿수를 지정한 UNSIGNED DECIMAL 컬럼. |
$table->unsignedInteger('votes'); |
UNSIGNED INTEGER 컬럼. |
$table->unsignedMediumInteger('votes'); |
UNSIGNED MEDIUMINT 컬럼. |
$table->unsignedSmallInteger('votes'); |
UNSIGNED SMALLINT 컬럼. |
$table->unsignedTinyInteger('votes'); |
UNSIGNED TINYINT 컬럼. |
$table->uuid('id'); |
UUID 컬럼. |
$table->year('birth_year'); |
YEAR 컬럼. |
아래는 사용 가능한 모든 컬럼 Modifier의 목록입니다. 이 목록은 인덱스 modifiers를 포함하지 않습니다:
Modifier | 설명 |
---|---|
->after('column') |
컬럼을 다른 컬럼 "뒤"로 옮깁니다 (MySQL) |
->autoIncrement() |
INTEGER 컬럼을 자동으로 증가하는 (auto-increment) (primary key)로 지정합니다 |
->charset('utf8') |
컬럼의 캐릭터셋을 지정합니다 (MySQL) |
->collation('utf8_unicode_ci') |
컬럼의 collation 지정합니다 (MySQL/SQL Server) |
->comment('my comment') |
컬럼에 코멘트 추가합니다 (MySQL/PostgreSQL) |
->default($value) |
컬럼의 "기본"값을 설정합니다 |
->first() |
컬럼을 테이블의 "맨 처음" 위치로 옮깁니다 (MySQL) |
->nullable($value = true) |
컬럼에 NULL 값이 입력되는 것을 허용합니다(기본값) |
->storedAs($expression) |
stored generated 컬럼 생성하기 (MySQL) |
->unsigned() |
INTEGER 컬럼을 UNSIGNED 으로 지정 (MySQL) |
->virtualAs($expression) |
virtual generated 컬럼 생성하기 (MySQL) |
->generatedAs($expression) |
지정한 시퀀스 옵션을 사용하여 ID 컬럼 만들기 (PostgreSQL) |
->always() |
id 컬럼에 입력할 순차 값의 우선 순위를 정의합니다 (PostgreSQL) |
(역자주 : generated column (virtual/stored) 는 mysql 5.7 부터 가능한 컬럼 유형으로 자세한 내용은 mysql 공식 매뉴얼을 참고하십시오)
명령어 | 설명 |
---|---|
$table->dropRememberToken(); |
remember_token 컬럼 drop. |
$table->dropSoftDeletes(); |
deleted_at 컬럼 drop. |
$table->dropSoftDeletesTz(); |
dropSoftDeletes() 메소드의 alias. |
$table->dropTimestamps(); |
created_at 와 updated_at 컬럼 drop. |
$table->dropTimestampsTz(); |
dropTimestamps() 메소드의 alias. |
각각의 인덱스 메소드는 인덱스의 이름을 두번째 인자를 전달 받는다(필수가 아닙니다). 이 값이 생략된다면, 인덱스의 이름은 테이블과 컬럼의 이름을 기반으로 생성됩니다.
커맨드 | 설명 |
---|---|
$table->primary('id'); |
primary key 추가. |
$table->primary(['id', 'parent_id']); |
복합 키 추가. |
$table->unique('email'); |
유니크 인덱스 추가. |
$table->index('state'); |
기본적인 인덱스 추가. |
$table->spatialIndex('location'); |
공간(spatial) 인덱스 추가 (SQLite 제외.) |
인덱스를 삭제하기 위해서는 인덱스의 이름을 지정해야 합니다. 라라벨은 자동으로 인덱스에 합리적인 이름을 부여하도록 설정되어 있습니다. 테이블 이름, 인덱스된 컬럼의 이름, 그리고 인덱스 타입을 합친것입니다. 다음은 몇 개의 예제 입니다:
]명령어 | 설명 |
---|---|
$table->dropPrimary('users_id_primary'); |
"users" 테이블에서 프라이머리 키 지우기. |
$table->dropUnique('users_email_unique'); |
"users" 테이블에서 유니크 인덱스 지우기. |
$table->dropIndex('geo_state_index'); |
"geo" 테이블에서 기본적인 인덱스 지우기. |
$table->dropSpatialIndex('geo_location_spatialindex'); |
"geo" 테이블에서 공간(spatial) 인덱스 지우기(SQLite 제외). |