집 >데이터 베이스 >MySQL 튜토리얼 >좋아요가 연결된 게시물을 삭제할 때 외래 키 제약 문제를 처리하는 방법은 무엇입니까?
외래 키 제약 조건 문제가 있는 게시물을 삭제하거나 업데이트할 수 없습니다
이 질문은 좋아요가 연결된 게시물을 삭제하려고 할 때 발생합니다. 오류 발생: "SQLSTATE[23000]: 무결성 제약 조건 위반: 1451 상위 행을 삭제하거나 업데이트할 수 없습니다..."
문제 원인
제공된 Post 및 Like 스키마는 두 테이블 사이에 외래 키 제약 조건을 설정합니다. 여기서 Like 테이블의 post_id는 Posts 테이블의 ID를 참조합니다. 좋아요가 연결된 게시물이 삭제되면 게시물을 삭제하면 좋아요 테이블에 고립된 좋아요가 남게 되므로 이 제약 조건을 위반합니다.
해결책 옵션 1: onDelete('cascade')
한 가지 해결책은 Like 마이그레이션 파일에서 onDelete('cascade')를 사용하는 것입니다. 이는 Posts 테이블에서 레코드가 삭제되면 Like 테이블의 해당 레코드도 모두 삭제되도록 지정합니다.
Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });
해결 방법 2: 관련 레코드 삭제
또는 게시물 모델에서 좋아요 모델로의 관계를 정의한 경우 게시물 자체를 삭제하기 전에 연결된 좋아요를 삭제할 수 있습니다.
$post->likes()->delete(); $post->delete();
이러한 솔루션 중 하나를 구현하면 외래 키 제약 오류를 해결하고 관련 좋아요가 있는 게시물을 성공적으로 삭제할 수 있습니다.
위 내용은 좋아요가 연결된 게시물을 삭제할 때 외래 키 제약 문제를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!