Laravel:외래 키 제약 조건 변경
2616 단어 sqllaravelprogramming
외래 키에 추가
ON DELETE cascade
하고 열을 null로 만들 수 없습니다. 동료 개발자의 다른 커밋과 병합되는 위치에 이미 배포되었습니다.이제 사용자는 매우 성가신 카테고리를 선택하지 않고 게시물을 저장할 수 없습니다 ...
이제 외래 키 제약 조건을 변경해야 합니다.
먼저 SQL 쿼리를 만들어 봅시다.
먼저 현재 외래 키를 제거해야 합니다.
따라서 이를 제거하려면 먼저 외래 키의 이름을 가져와야 합니다. 외래 키를 만들려면
{table_name}_{column_name}_foreign
가 필요합니다.내 마이그레이션에서 볼 수 있습니다
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');`
$table->integer('category_id')->unsigned();`
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
});
여기에서 외래 키 이름이
posts_category_id_foreign
임을 알았습니다.이제 외래 키와 열을 제거할 수 있습니다. 다음은 외래 키를 삭제하는 쿼리입니다.
ALTER TABLE posts DROP FOREIGN KEY posts_category_id_foreign;
ALTER TABLE posts DROP COLUMN category_id;
그런 다음 새로운 nullable 열과 키를 만들 수 있습니다.
ALTER TABLE posts ADD COLUMN category_id NULL;
ALTER TABLE posts ADD FOREIGN KEY (key) REFERENCES categories(id) ON DELETE SET NULL;
이제 마이그레이션에서 이것을 변환하는 방법을 살펴보겠습니다.
php artisan make:migration update_posts_category_foreign
up
메서드에서 먼저 현재 외래 키와 열을 제거할 수 있습니다.Schema::table('posts', function (Blueprint $table) {
$table->dropForeign('posts_category_id_foreign');
$table->dropColumn('category_id');
});
Schema::table('posts', function (Blueprint $table) {
$table->integer('category_id')->unsigned()->nullable();
$table->foreign('category_id')->references('id')->on('posts')->onDelete('set null');
});
그게 다야! down 메서드에서는 이를 뒤집을 뿐입니다.
Schema::table('posts', function (Blueprint $table) {
$table->dropForeign('posts_category_id_foreign');
$table->foreign('category_id')->references('id')->on('posts')->onDelete('cascade');
});
그것이 내가 실수에서 벗어난 방법입니다.
또 보자! 즐거운 코딩하세요!
Reference
이 문제에 관하여(Laravel:외래 키 제약 조건 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rabibsust/laravel-alter-a-foreign-key-constraint-56bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)