데이터베이스 마이그레이션이란 테이블 스키마의 버전 관리이다.
열 이름을 바꾼다든지 하는 이력을 마이그레이션 코드로 남겨 두고 필요할 때마다 마이그레이션을 실행했다가 롤백하는 작업을 자유롭게 할 수 있다.
테이블 지우기전에 해야할 것
mysql> set foreign_key_checks = 0;
0 : 외래키 설정 끄기
1 : 외래키 설정 켜기
다른 테이블과 관계가 형성되면 오류가 생길 수 있다.
테이블 지우고 난 후에 해야할 것
mysql> set foreign_key_checks = 1;
마이그레이션 뼈대 만들기
테이블명을 넣어서 만든다.
php artisan make:migration create_posts_table --create=posts
database/migrations 디렉터리에 마이그레이션한 파일이 생성되었다.
아래는 기본 뼈대이다.
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateAuthorsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('authors', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('authors');
}
}
마이그레이션 내용 채우기
이제 기본뼈대에다가 테이블을 채우자
increments메서드는 자동 증가 기본 키이다.
public function up()
{
Schema::create('authors', function (Blueprint $table) {
$table->increments('id');
$table->string('titile');
$table->text('body');
$table->timestamps();
});
}
https://laravel.kr/docs/5.8/migrations
마이그레이션 실행
데이터베이스의 테이블을 모두 삭제 시킨 다음 마이그레이션을 실행해보자
php artisan migrate
삭제 시켰던 테이블이 다시 생성되었다.
롤백을 실행하면 테이블이 삭제된다.
php artisan migrate:rollback
열추가
authors 테이블에 name 열을 추가해보자
테이블 열 추가 마이그레이션 뼈대 코드를 만들자
php artisan make:migration add_name_to_authors_table --table=authors
아래 처럼 파일이 생성되었을 것이다.
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddNameToAuthorsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('authors', function (Blueprint $table) {
//
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('authors', function (Blueprint $table) {
//
});
}
}
여기서 name라는 테이블을 만들어주자. ($table->string('name')->nullable();
public function up()
{
Schema::table('authors', function (Blueprint $table) {
$table->string('name')->nullable();
});
}
저장을 하고 마이그레이션을 실행하자
php artisan migrate
authors에 name컬럼이 생성되었다.
초기화 및 새로고침
php artisan migrate:refresh