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: 모델 관계 활용
게시물 모델이 좋아요 모델과 관계를 유지하는 경우 다음 접근 방식을 사용할 수 있습니다.
둘 중 하나를 채택하여 이러한 솔루션을 사용하면 문제가 있는 오류를 해결할 수 있어 상태에 관계없이 게시물을 삭제할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3