programing

마이그레이션을 사용하여 라라벨의 열 이름을 변경하려면 어떻게 해야 합니까?

newsource 2022. 9. 25. 00:26

마이그레이션을 사용하여 라라벨의 열 이름을 변경하려면 어떻게 해야 합니까?

아래에 언급된 대로 열이 있습니다.

public function up()
{
    Schema::create('stnk', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('no_reg', 50)->unique();
        $table->string('no_bpkb', 50)->unique();
        $table->string('nama_pemilik', 100);
        $table->string('alamat');
        $table->string('merk', 50);
        $table->string('tipe', 50);
        $table->string('jenis', 50);
        $table->smallInteger('tahun_pembuatan');
        $table->smallInteger('tahun_registrasi');
        $table->smallInteger('isi_silinder');
        $table->string('no_rangka', 50);
        $table->string('no_mesin', 50);
        $table->string('warna', 50);
        $table->string('bahan_bakar', 50);
        $table->string('warna_tnkb', 50);
        $table->string('kode_lokasi', 50);
        $table->date('berlaku_sampai');
        $table->timestamps();

        $table->index('created_at');
        $table->index('updated_at');
    });

}

나는 stnk 테이블에 씨를 뿌렸다.

이제 이름을 바꾸고 싶다id로.id_stnk.
"composer" "doctrine/dbal"을 추가하고,composer update.

이행을 완료php artisan migration:make rename_column.
그런 다음 rename_column에 새로운 메서드를 추가했습니다.

Schema::table('stnk', function(Blueprint $table)
{
    $table->renameColumn('id', 'id_stnk');

});

그리고 명령어를 실행해봤는데php artisan migrate아래에 기재된 에러가 발생하였습니다.

[Ulluminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1025 Error on rename of './my_database/#sql -447_33' to './my_database/stnk' (error: 150) (SQL: ALTER TABLE stnk CHANGE id id_stnk INT UNSIGENED AUTO_INCREMENT NOT NULL)

[PDOException]
SQLSTATE[HY000]: General error: 1025  Error on rename  of './my_database/#sql -447_33' to './my_database/stnk' (error: 150)

다른 마이그레이션 파일을 생성하여 이 파일에 저장해야 합니다.

달려.

Laravel 4:    php artisan migrate:make rename_stnk_column
Laravel 5:    php artisan make:migration rename_stnk_column

그런 다음 새 마이그레이션 파일 위치:

class RenameStnkColumn extends Migration
{

    public function up()
    {
        Schema::table('stnk', function(Blueprint $table) {
            $table->renameColumn('id', 'id_stnk');
        });
    }


    public function down()
    {
        Schema::table('stnk', function(Blueprint $table) {
            $table->renameColumn('id_stnk', 'id');
        });
    }

}

열 마이그레이션 파일 이름을 변경하려면 각각 다음 단계를 수행하십시오.

1- 프로젝트에 원칙/디벌 라이브러리가 있습니까?명령어를 먼저 실행하지 않은 경우

composer require doctrine/dbal

2- 이전 마이그레이션 파일 업데이트를 위한 마이그레이션 업데이트 파일을 만듭니다.경고(같은 이름을 사용해야 함)

php artisan make:migration update_oldFileName_table

예를 들어 이전 마이그레이션 파일 이름: create_users_table 업데이트 파일 이름: update_users_table

3- update_oldNameFile_table.php

Schema::table('users', function (Blueprint $table) {
$table->renameColumn('from', 'to');
});

이전 열 이름과 새 열 이름을 '시작'합니다.

4 - 마지막으로 migrate 명령어 실행

php artisan migrate

소스 링크: 라라벨 문서

없음: 이 기능은 larabel 5.x부터8.x 버전을 지원합니다.

가장 먼저 해야 할 작업은 마이그레이션 파일을 만드는 것입니다.

명령줄 입력

php artisan make:migration rename_stk_column --table="YOUR TABLE" --create

파일을 작성한 후.데이터베이스/마이그레이션에서 앱 폴더에서 새로 만든 마이그레이션 파일을 엽니다.

업 방식으로 다음을 삽입합니다.

Schema::table('stnk', function(Blueprint $table)
    {
        $table->renameColumn('id', 'id_stnk');
    });
}

다운 방식:

    Schema::table('stnk', function(Blueprint $table)
    {
        $table->renameColumn('id_stnk', 'id);
    });
}

명령줄에 입력하기만 하면 됩니다.

php artisan migrate

그러면 wollah! 방금 ID 이름을 id_stnk로 변경했습니다.그런데 사용할 수 있습니다.

php artisan migrate:rollback

변경을 원래대로 되돌립니다.행운을 빌어요

컬럼 이름 변경(Larabel 5.x)

열의 이름을 변경하려면 스키마 작성기에서 renameColumn 메서드를 사용할 수 있습니다.* 컬럼의 이름을 변경하기 전에 반드시 composer.json 파일에 주의/dbal 종속성을 추가하십시오.*

또는 컴포저를 사용하여 패키지를 요구할 수도 있습니다.

composer require doctrine/dbal

출처: https://laravel.com/docs/5.0/schema#renaming-columns

주의: make: migration을 사용하고 migration: make for Laravel 5.x를 사용합니다.

답이 하나도 안 먹혀서 여기에 0.02달러를 던져넣은 건 맞지만 날 올바른 길로 가게 했어무슨 일이 일어났냐면 이전의 외국 제약이 오류를 던지고 있었다는 것이다.생각해보면 뻔해요.

새로운 이행에서는up방법먼저 원래 구속조건을 삭제하고 컬럼 이름을 변경한 후 새 컬럼 이름을 사용하여 구속조건을 다시 추가합니다.서서 down판매 설정으로 되돌리려면 정반대로 해야 합니다.

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('proxy4s', function (Blueprint $table) {
        // Drop it
        $table->dropForeign(['server_id']);

        // Rename
        $table->renameColumn('server_id', 'linux_server_id');

        // Add it
        $table->foreign('linux_server_id')->references('id')->on('linux_servers');
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('proxy4s', function (Blueprint $table) {
        // Drop it
        $table->dropForeign(['linux_server_id']);

        // Rename
        $table->renameColumn('linux_server_id', 'server_id');

        // Add it
        $table->foreign('server_id')->references('id')->on('linux_servers');
    });
}

이것이 미래에 누군가의 시간을 절약해 주길 바랍니다!

열의 이름을 변경하려면 스키마 작성기에서 renameColumn 메서드를 사용할 수 있습니다.

Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('from', 'to');
});

오래된 질문인 것은 알지만, 최근 Larabel 7 어플리케이션에서도 같은 문제에 직면했습니다.컬럼 이름을 바꾸기 위해 이 답변의 힌트를 사용했습니다.composer require doctrine/dbal행행발 i i i i i i i를 했다.composer require doctrine/dbal:^2.12.1intrin/dbal을 사용하다

이미 상위 버전을 사용하고 있는 경우에는 이 답변이 적절하지 않을 수 있습니다.

교리/dbal 패키지를 사용하지 않으려면 쿼리 DB 문을 사용하십시오.예를 들어 다음과 같습니다.

public function up()
{
    DB::statement('ALTER TABLE table_name CHANGE from to VARCHAR(200)');
}

public function down()
{
    DB::statement('ALTER TABLE table_name CHANGE to from VARCHAR(200)');
}

위의 답변이 좋습니다.그렇지 않으면 마이그레이션을 롤백하고 이름을 변경한 후 마이그레이션을 다시 실행하십시오.

 php artisan migrate:rollback

언급URL : https://stackoverflow.com/questions/26522292/how-can-i-rename-column-in-laravel-using-migration