Laravel에서 마이그레이션을 사용하여 데이터베이스 테이블을 만들고 관리하는 방법

Laravel에서 마이그레이션을 사용하여 데이터베이스 테이블을 만들고 관리하는 방법

2022-05-31 last update

10 minutes reading Databases PHP Frameworks PHP Laravel Development
Laravel database migrations 개발자는 데이터베이스 콘솔에 로그인하거나 SQL 조회를 실행하지 않고 응용 프로그램의 데이터베이스를 신속하게 안내, 제거 및 재작성할 수 있습니다.
이 가이드에서는 응용 프로그램 링크를 저장하는 데 사용할 테이블을 설정하는 데이터베이스 마이그레이션을 만듭니다.이를 위해 기본적으로 Laravel에 첨부된 Artisan 명령행 도구를 사용합니다.마지막으로 artisan 명령만 사용하면 데이터베이스 테이블을 여러 번 삭제하고 다시 만들 수 있습니다.
시작하려면 먼저 응용 프로그램의 루트 디렉토리에 있고 Docker Compose 개발 환경이 시작되고 실행 중인지 확인합니다.
  1. cd ~/landing-laravel
  2. docker-compose up -d
Output
landing-laravel_app_1 is up-to-date landing-laravel_nginx_1 is up-to-date landing-laravel_db_1 is up-to-date
다음은 데이터베이스 마이그레이션을 만들어서 links 표를 설정합니다.Laravel Migrations 개발자가 프로그래밍 방식으로 데이터베이스 테이블을 만들고 업데이트하며 삭제할 수 있도록 데이터베이스 구조의 버전 제어 시스템으로 한다.
새 마이그레이션을 만들려면 make:migration Artisan 명령을 실행하면 database/migrations 폴더의 Laravel 프로그램에서 새 클래스를 안내합니다.이러한 유형에는 기본 템플릿 코드가 포함됩니다.
PHP가 설치된 docker-compose exec app 서비스 컨테이너에서 명령을 실행하려면 app 를 사용하십시오.
  1. docker-compose exec app php artisan make:migration create_links_table
Output
Created Migration: 2020_11_18_165241_create_links_table
참고: 마이그레이션 이름은 현재 날짜와 시간 및 make:migration 명령 매개 변수로 제공된 이름을 기반으로 생성됩니다.따라서 마이그레이션 파일 이름은 약간 다릅니다.정확한 파일 이름에 대해서는 다음을 확인하십시오.
  1. find ~/landing-laravel/database/migrations -name '*create_links_table.php'
Output
/home/sammy/landing-laravel/database/migrations/2020_11_18_165241_create_links_table.php
선택한 편집기를 사용하여 생성된 마이그레이션 클래스를 엽니다.
  1. nano database/migrations/2020_11_18_165241_create_links_table.php
다음은 응용 프로그램 데이터를 저장하는 데 필요한 표를 포함하기 위해 up 방법을 업데이트합니다.
마이그레이션 클래스의 현재 내용을 다음 코드로 대체합니다.강조 표시 값은 추가해야 하는 유일한 행이므로 원하는 경우 강조 표시된 행만 복사하여 Schema::create 정의에 포함할 수 있습니다.
데이터베이스/마이그레이션/2020\u10\u12\u171200\u생성\u링크\u표.php
<?php

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

class CreateLinksTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('links', function (Blueprint $table) {
            $table->id();
            $table->string('url', 200);
            $table->text('description');
            $table->boolean('enabled')->default(true);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('links');
    }
}
이 테이블에는 Artisan 명령을 사용하여 자동으로 생성된 테이블 정의에 포함된 기본 필드 외에도 세 개의 새 필드가 있습니다.
  • url: 링크 URL의 문자열 필드를 저장합니다.
  • description: 링크 설명을 저장하는 텍스트 필드입니다.
  • enabled: 링크가 활성화되었는지 여부에 관계없이 링크 상태를 저장하는 필드입니다.boolean 구조 유형은 tinyint 또는 0 값을 저장할 기호가 없는 필드를 생성합니다.
  • 이 필드를 추가한 후 마이그레이션 파일을 저장합니다.다음 도구를 사용하여 마이그레이션을 실행합니다.
    1. docker-compose exec app php artisan migrate
    Output
    Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table (152.46ms) Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table (131.12ms) Migrating: 2019_08_19_000000_create_failed_jobs_table Migrated: 2019_08_19_000000_create_failed_jobs_table (101.06ms) Migrating: 2020_11_18_165241_create_links_table Migrated: 2020_11_18_165241_create_links_table (60.20ms)
    다른 마이그레이션도 1 과 함께 수행됩니다.기본 Laravel 설치에 사용자 create_links_table 테이블 및 users 테이블 및 대기열 작업 password_resets 테이블 마이그레이션이 포함되어 있기 때문입니다.프레젠테이션 프로그램에서 이 기능을 사용하지 않기 때문에 이 마이그레이션을 안전하게 삭제할 수 있습니다.그러나 응용 프로그램을 개발하고 더 개발할 계획이라면 제자리에 보존할 수도 있습니다.모든 마이그레이션 파일은 응용 프로그램 루트 폴더 failed_jobs 에 있습니다.
    데이터베이스 마이그레이션에 대한 자세한 내용은 안내서 How To Use Database Migrations and Seeders to Abstract Database Setup in Laravel 를 참조하십시오.
    이 시리즈의 다음 부분에서 응용 프로그램 링크 테이블의 항목을 열거, 삽입, 삭제하는 사용자 정의 Artisan 명령을 만들 것입니다.