집 >데이터 베이스 >MySQL 튜토리얼 >Laravel에서 \'상위 행을 삭제하거나 업데이트할 수 없습니다\' 오류를 수정하는 방법은 무엇입니까?
Laravel에서 "상위 행을 삭제하거나 업데이트할 수 없습니다" 오류 해결
좋아요가 연결된 게시물을 삭제할 때 다음과 같은 문제가 발생합니다. 오류:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails
이 오류는 외래 키 제약 조건과 관련된 스키마 문제를 나타냅니다.
문제 분석
likes 테이블에 외래 키가 있습니다. post 테이블의 id 열을 참조하는 post_id에 대한 제약 조건입니다. 연결된 좋아요를 먼저 삭제하지 않고 게시물을 삭제하려고 하면 likes.post_id에 대한 외래 키 제약 조건으로 인해 작업이 방지됩니다.
해결책 1: onDelete('cascade') 사용
문제를 해결하려면 좋아요 마이그레이션 파일의 likes.post_id 외래 키에 대한 onDelete 작업을 구성할 수 있습니다.
<code class="php">Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });</code>
이 구성을 사용하면 게시물이 삭제되면 관련된 모든 좋아요가 외래 키 위반 문제가 해결되면 자동으로 삭제됩니다.
해결책 2: 명시적으로 좋아요 삭제
또는 게시물을 삭제하기 전에 게시물과 관련된 좋아요를 명시적으로 삭제할 수도 있습니다. 게시물 자체. 이 접근 방식을 사용하려면 PostController.php에 다음 줄을 추가해야 합니다.
<code class="php">$post->likes()->delete(); $post->delete();</code>
관계 기반 솔루션
모델 간에 관계가 구성된 경우 다음을 수행할 수 있습니다. 단일 작업으로 게시물과 관련 좋아요를 모두 삭제하려면 다음 접근 방식을 사용하세요.
<code class="php">$post->likes()->delete(); $post->delete();</code>
위 내용은 Laravel에서 \'상위 행을 삭제하거나 업데이트할 수 없습니다\' 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!