집 >데이터 베이스 >MySQL 튜토리얼 >Laravel에서 \'상위 행을 삭제하거나 업데이트할 수 없습니다: 외래 키 제약 조건 실패\' 오류를 해결하는 방법은 무엇입니까?
Laravel에서 게시물을 삭제하려고 하면 흥미로운 오류가 발생할 수 있습니다. 좋아요가 연결된 항목입니다. 오류 메시지는 다음을 선언합니다.
"SQLSTATE[23000]: 무결성 제약 조건 위반: 1451 상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다(eliapi8.likes, CONSTRAINT likes_post_id_foreign FOREIGN KEY(post_id) REFERENCES 게시물( id))"
스키마 분석
스키마를 조사한 결과 likes 테이블의 post_id 필드에 외래 키 제약 조건이 존재한다는 것이 분명해졌습니다. 이 제약 조건은 연관된 유사 레코드가 있는 경우 게시물 레코드가 삭제되는 것을 방지합니다.
제안 솔루션
해결책 1: onDelete('cascade') 활용
likes 테이블의 마이그레이션 파일에 onDelete('cascade')를 도입하면 해결 방법이 제공됩니다. 이 지시문을 사용하면 게시물 레코드가 삭제될 때 해당하는 유사 레코드가 모두 자동으로 제거됩니다.
Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });
해결책 2: 모델 관계 활용
게시물이 모델은 Like 모델과 관계를 유지하므로 다음 접근 방식을 사용할 수 있습니다.
이러한 해결 방법 중 하나를 채택하면 문제가 있는 오류가 해결되어 좋아요 상태에 관계없이 게시물을 삭제할 수 있습니다.
위 내용은 Laravel에서 '상위 행을 삭제하거나 업데이트할 수 없습니다: 외래 키 제약 조건 실패' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!