본문 바로가기

Dev/PHP

[PHP] Laravel에서의 Mysql 연동 DB 마이그레이션

 

 

 

*LAMP or LEMP 스택을 이미 구축한 상태임을 전제합니다.

본 포스팅의 주제는 Mysql 연동과 Database 마이그레이션입니다.

 

1. Mysql 접속, Database 생성

DB 생성은 workbench 혹은 phpMyAdmin 등의 별도 도구를 이용해도 무방합니다만, 본 포스팅에서는 터미널을 통해 직접 생성해 보겠습니다. 

먼저 터미널을 엽니다.

 

$ mysql -u root -p

 

본 예제에서는 root 권한으로 mysql에 접속합니다. 터미널 커멘드에 mysql> 표시가 보이면 접속한 것입니다.

(필자의 경우 root 권한을 그대로 이용하는 것보다는 별도의 유저 계정을 생성해서 진행하는 것을 권장합니다만, 본 글에서는 편의를 위해 root 계정을 통해 구축하겠습니다.)

 

예시를 위해 test_database라는 이름의 데이터 베이스를 생성합니다.

 

mysql> create database test_database;
mysql> flush privileges;
mysql> exit

 

위 명령어를 순차적으로 입력합니다. Query OK, ~ 로 시작하는 문장이 반환되면 정상적으로 명령어가 실행된 것입니다. 만약, query ok를 반환하지 않는다면 입력 쿼리문을 살펴보세요.

 

2. Laravel 프로젝트 .env 파일 세팅

프로젝트 디렉터리로 이동해 .env 파일을 열고 DB_ 로 시작하는 항목을 수정합니다.

해당 내용의 초기값은 아래와 같습니다.

 

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

 

위 항목 중 포트번호 3306은 mysql의 기본 포트번호입니다.

만약, 본 가이드와 다르게 별도의 db 설정을 하셨다면 그에 맞게 기입해 주셔야 합니다.

이 중, database를 1번에서 생성했던 test_database로 바꿔 줍니다.

DB_DATABASE=test_database;

 

DB_USERNAME, DB_PASSWORD도 본인의 환경에 맞게 입력하고 저장합니다.

(DB_HOST는 로컬에서 구축하는 경우에는 수정할 필요가 없습니다.)

 

3. DB 마이그레이션 - 마이그레이션 파일 생성

다시 터미널로 돌아와 프로젝트 폴더로 이동합니다.

프로젝트 폴더로 이동하면 php artisan 명령어가 사용 가능합니다.

php artisan을 통해 샘플 php 데이터베이스 스크립트를 생성합니다.

 

$ php artisan make:migration create_memos_table;

 

여기서 파일 양식은 반드시 create_[테이블명]_table 이와 같은 형태로 맞춰주어야 합니다.

위 명령어를 통해 [your project folder]/database/migrations 경로에 memos 테이블 생성 스크립트가 간단히 생성됩니다.

 

 

create_memos_table.php 이외의 파일은 laravel 설치 시, 기본적으로 포함하고 있는 마이그레이션 파일입니다.

이제, create_memo_table.php를 IDE 및 에디터를 통해 열어봅니다.

 

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateMemosTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('memos', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('memos');
    }
}

 

파일을 열면 기본적으로 위와 같이 테이블을 생성하고 드롭하는 내용이 포함되어 있습니다.

여기서 content라는 텍스트 칼럼을 500byte 길이로 생성해보겠습니다.

up 함수의 스키마 클래스 부분을 아래와 같이 추가합니다.

 

Schema::create('memos', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('content',500);
            $table->timestamps();
        });

 

이제 저장하고 다시 터미널로 돌아갑니다.

 

4. DB 마이그레이션 - 테이블 적용

다음의 명령어를 통해 DB에 마이그레이션을 진행합니다.

 

$ php artisan migrate

 

 

터미널에서 마이그레이션 진행 상황을 출력해줍니다.

 

 

mysql-workbench를 통해 컬럼 추가 작업까지 정상적으로 반영된 것을 확인할 수 있습니다.

 

다음 포스팅에서는 Laravel 프로젝트에서 방금 생성한 DB를 통한 기본적인 MVC 패턴 구성에 대해 작성할 예정입니다.