[php] 마이그레이션에서 기존 테이블에 새 열 추가

Laravel 프레임 워크를 사용하여 기존 데이터베이스 테이블에 새 열을 추가하는 방법을 알 수 없습니다.

다음을 사용하여 마이그레이션 파일을 편집하려고했습니다 …

<?php

public function up()
{
    Schema::create('users', function ($table) {
        $table->integer("paid");
    });
}

터미널에서 php artisan migrate:install및을 실행 migrate합니다.

새 열을 어떻게 추가합니까?



답변

마이그레이션을 생성하기 위해 Artisan CLI에서 migrate : make 명령을 사용할 수 있습니다. 기존 모델과의 충돌을 피하려면 특정 이름을 사용하십시오.

라 라벨 3

php artisan migrate:make add_paid_to_users

라 라벨 5 이상 :

php artisan make:migration add_paid_to_users_table --table=users

그런 다음 Schema::table()새 테이블을 작성하지 않고 기존 테이블에 액세스 할 때 메소드 를 사용해야합니다 . 그리고 다음과 같은 열을 추가 할 수 있습니다.

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('paid');
    });
}

롤백 옵션을 추가하는 것을 잊지 마십시오.

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('paid');
    });
}

그런 다음 마이그레이션을 실행할 수 있습니다.

php artisan migrate

이것은 모두 라 라벨 3에 대한 문서에서 잘 설명되어 있습니다.

그리고 Laravel 4 / Laravel 5의 경우 :

편집하다:

$table->integer('paid')->after('whichever_column');특정 열 뒤에이 필드를 추가 하는 데 사용 하십시오.


답변

Laravel 5.1 이상을 사용하는 향후 독자를위한 mike3875의 답변에 추가하겠습니다.

작업을 더 빨리하기 위해 다음과 같이 플래그 “–table”을 사용할 수 있습니다.

php artisan make:migration add_paid_to_users --table="users"

이것은 추가합니다 updown자동 방법의 내용 :

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        //
    });
}

마찬가지로 --create["table_name"]새 마이그레이션을 만들 때이 옵션을 사용하여 마이그레이션에 더 많은 상용구를 추가 할 수 있습니다. 작은 점이지만 많은 작업을 수행 할 때 유용합니다!


답변

Laravel 5를 사용하는 경우 명령은 다음과 같습니다.

php artisan make:migration add_paid_to_users

사물을 만들기위한 모든 명령 (컨트롤러, 모델, 마이그레이션 등)이 make:명령 아래로 이동되었습니다 .

php artisan migrate 그래도 여전히 동일합니다.


답변

라 라벨 5.6 이상

기존 테이블에 FOREIGN KEY로 새 열을 추가하려는 경우.

다음 명령을 실행하여 새 마이그레이션을 작성하십시오. make : migration

예 :

php artisan make:migration add_store_id_to_users_table --table=users

데이터베이스 / 마이그레이션 폴더에 다음과 같은 새 마이그레이션 파일이 있습니다.

2018_08_08_093431_add_store_id_to_users_table.php (댓글 참조)

<?php

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

class AddStoreIdToUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('users', function (Blueprint $table) {

            // 1. Create new column
            // You probably want to make the new column nullable
            $table->integer('store_id')->unsigned()->nullable()->after('password');

            // 2. Create foreign key constraints
            $table->foreign('store_id')->references('id')->on('stores')->onDelete('SET NULL');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('users', function (Blueprint $table) {

            // 1. Drop foreign key constraints
            $table->dropForeign(['store_id']);

            // 2. Drop the column
            $table->dropColumn('store_id');
        });
    }
}

그 후 다음 명령을 실행하십시오.

php artisan migrate

어떤 이유로 든 마지막 마이그레이션을 실행 취소하려면 다음 명령을 실행하십시오.

php artisan migrate:rollback

문서 에서 마이그레이션에 대한 자세한 정보를 찾을 수 있습니다.


답변

다음 Schema::create과 같이 초기 방법 내에 새 열을 추가 할 수 있습니다 .

Schema::create('users', function($table) {
    $table->integer("paied");
    $table->string("title");
    $table->text("description");
    $table->timestamps();
});

이미 테이블을 생성 한 경우 새 마이그레이션을 생성하고 다음 Schema::table방법을 사용하여 해당 테이블에 열을 추가 할 수 있습니다 .

Schema::table('users', function($table) {
    $table->string("title");
    $table->text("description");
    $table->timestamps();
});

이 문서는 이것에 대해 상당히 철저하며 버전 3 에서 버전 4 로 너무 많이 변경되지 않았습니다 .


답변

테이블에 열을 추가 한 다음 터미널에 다음과 같이 기존 마이그레이션 파일을 간단히 수정할 수 있습니다.

$ php artisan migrate:refresh


답변

이 것은 laravel 5.1에서 작동합니다.

먼저 터미널 에서이 코드를 실행하십시오.

php artisan make:migration add_paid_to_users --table=users

그 후 프로젝트 디렉토리로 이동하여 디렉토리 데이터베이스를 확장하십시오-마이그레이션 및 add_paid_to_users.php 파일을 편집 하고이 코드를 추가하십시오

public function up()
{
    Schema::table('users', function (Blueprint $table) {
         $table->string('paid'); //just add this line
    });
}

그 후 터미널로 돌아가서이 명령을 실행하십시오.

php artisan migrate

이 도움을 바랍니다.