2019-02-14
laravel에서 마이그레이션을 할때 쓰이는 명령어는 아래 링크에서 확인 가능하다
링크 https://laravel.kr/docs/5.7/migrations

아래는 명령어부분만 가져와서 편집해 놓은 것이다.

테이블 옵션을 정의하기 위해서 스키마 빌더의 다음 명령어를 사용할 수 있습니다:

명령어 설명
$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_atupdated_at TIMESTAMP 컬럼.
$table->timestampsTz(); nullable (null 값이 허용되는) created_atupdated_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 공식 매뉴얼을 참고하십시오)

사용가능한 명령어 alias(별칭)

명령어 설명
$table->dropRememberToken(); remember_token 컬럼 drop.
$table->dropSoftDeletes(); deleted_at 컬럼 drop.
$table->dropSoftDeletesTz(); dropSoftDeletes() 메소드의 alias.
$table->dropTimestamps(); created_atupdated_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 제외).