마이그레이션 = migration = 이주
데이터 스키마의 버전 관리.
데이터베이스 마이그레이션을 이용하면, 테이블에 새로운 열을 추가한다든지, 열 이름을 바꾼다든지 하는 이력을 마이그레이션 코드로 남겨 두고 필요할 때마다 마이그레이션을 실행했다가 롤백하는 등의 작업을 자유롭게 할 수 있다.
작성하는 것이 번거로워도, 작성해두면 데이터베이스 스키마 때문에 위기에 처하거나 변경 요구가 생겼을 때 효과적으로 대응할 수 있다.
= 마이그레이션은 스키마를 효과적으로 관리하고, 최신 테이블 스키마를 다른 개발자와 편리하게 공유할 수 있는 방법이다.
1. class '테이블이름' extends Migration
'테이블이름'을 만드는 클래스로, 마이그레이션을 확장시켜서 만든다.
2. public function up()
up()=마이그레이션을 '실행' 하는 메서드, down()='롤백(되돌리기)'을 위한 메서드
up의 메서드를 지정한 밑 부분에 보면, down 메서드도 있을 것이다.
마이그레이션 실행
1. php artisan migration
실행하면 마이그레이션'들'의 안에 넣어놨던 설정들이 실행된다.
나는 기존것2개(맨 처음 프로젝트 만들때 자동인것2개) 새로만든 것 2개로 총 4개를 실행시켰다.
처음부터 있었던 기존것2개는 무시하고 새로만든 것만 실행됐다.
마이그레이션 롤백
생성(up)은 뒤에 up 이라고 안적어도 됐지만, 롤백의 경우에는 뒤에 꼭 rollback을 지정해줘야한다.
public function down()
{
Schema::dropIfExists('posts');
}
클래스를 지우는 기능을 down에 적어서 혹시나 해봤으나 되지 않았다.
롤백은 무조건 :rollback 인것 같다.
그리고, 롤백 후에는 새로고침을 하면 데이터베이스 내용이 모두 사라져있다.
아래 캡쳐는 migration 테이블의 상황이다.
아무것도 없다.
cmd에서 rollback을 한다고해서, 마이그레이션 파일 자체가 사라지는 것은 아니다.