마이그레이션을 사용하여 라라벨의 열 이름을 변경하려면 어떻게 해야 합니까?
아래에 언급된 대로 열이 있습니다.
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.1
intrin/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
'programing' 카테고리의 다른 글
HAVING 절의 다중 집계 함수 (0) | 2022.09.25 |
---|---|
mysql db에 직렬화된 데이터를 저장할 때 사용해야 하는 열 유형을 선택하십시오. (0) | 2022.09.25 |
vue.js의 로그아웃 버튼으로 main.js의 인스턴스에 액세스합니다. (0) | 2022.09.25 |
문자열이 PHP의 이메일 주소인지 확인합니다. (0) | 2022.09.25 |
PHP에서 컨스트럭터를 오버로드할 수 없는 이유는 무엇입니까? (0) | 2022.09.25 |