데이터베이스 마이그레이션이란 테이블 스키마의 버전 관리이다.

열 이름을 바꾼다든지 하는 이력을 마이그레이션 코드로 남겨 두고 필요할 때마다 마이그레이션을 실행했다가 롤백하는 작업을 자유롭게 할 수 있다.


테이블 지우기전에 해야할 것

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

 

라라벨 5.8 - 마이그레이션

라라벨 한글 메뉴얼 5.8 - 마이그레이션

laravel.kr


마이그레이션 실행

데이터베이스의 테이블을 모두 삭제 시킨 다음 마이그레이션을 실행해보자

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

'라라벨' 카테고리의 다른 글

CRUD  (0) 2019.05.07
Composer  (0) 2019.04.16
엘로퀀트ORM  (0) 2019.04.01
쿼리빌더  (0) 2019.03.31
데이터베이스 모델(REPL)  (0) 2019.03.31

+ Recent posts