Laravel의 데이터베이스 제약 조건 오류: "상위 행을 삭제하거나 업데이트할 수 없습니다"
Laravel에서 발생하는 일반적인 오류는 "SQLSTATE[23000"입니다. ]: 무결성 제약 조건 위반: 1451 상위 행을 삭제하거나 업데이트할 수 없습니다." 이 오류는 관련 테이블에 하위 행이 있는 상위 테이블에서 행을 삭제하려고 할 때 발생합니다.
귀하의 경우 좋아요가 연결된 게시물을 삭제하려고 할 때 이 오류가 발생합니다. 이는 좋아요 테이블에 게시물 테이블을 참조하는 외래 키 제약 조건이 있기 때문입니다. 게시물을 삭제하려고 하면 좋아요 테이블에 해당 게시물에 의존하는 레코드가 아직 남아 있기 때문에 삭제할 수 없습니다.
이 오류를 해결하려면 onDelete('cascade'를 사용하도록 데이터베이스 스키마를 수정하면 됩니다. ). 상위 레코드가 삭제되면 연결된 하위 레코드도 자동으로 삭제됩니다.
onDelete('cascade')를 사용하여 업데이트된 좋아요 스키마:
<code class="php">Schema::create('likes', function (Blueprint $table) { $table->increments('id'); $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });</code>
또는 상위 레코드를 삭제하기 전에 연결된 하위 레코드를 수동으로 삭제할 수 있습니다. Laravel 모델에서는 다음 코드를 사용하여 이를 수행할 수 있습니다:
<code class="php">$post->likes()->delete(); $post->delete();</code>
위 내용은 다음은 귀하의 기사 내용에 맞는 몇 가지 질문 기반 제목입니다. * **Laravel 데이터베이스 제약 오류: 좋아요가 있는 게시물을 삭제할 수 없는 이유는 무엇입니까?** * **Laravel에서 상위 행 삭제: 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!