"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 참조 무결성을 유지하면서 Laravel에서 관련 행을 자동으로 삭제하는 방법은 무엇입니까?

참조 무결성을 유지하면서 Laravel에서 관련 행을 자동으로 삭제하는 방법은 무엇입니까?

2024년 12월 21일에 게시됨
검색:392

How to Automatically Delete Related Rows in Laravel While Maintaining Referential Integrity?

참조 무결성 보장: Laravel에서 관련 행 자동 삭제

Laravel의 Eloquent ORM에서 행을 삭제할 때 다음이 필요할 수 있습니다. 관련 행 전체에 걸쳐 삭제를 계단식으로 적용합니다. 이는 콜백을 사용하여 달성할 수 있습니다.

구현:

모델 삭제 중에 관련 행을 자동으로 삭제하려면 "삭제" 이벤트 활용을 고려하세요. 이 이벤트는 기본 행이 삭제되기 전에 트리거되어 후속 정리 작업을 수행할 수 있는 기회를 제공합니다.

모델 클래스 내에서 다음과 같이 "삭제" 이벤트 리스너를 정의합니다.

has_many('Photo');
    }

    // Event listener to cascade delete of related rows
    protected static function booted()
    {
        static::deleting(function (User $user) {
            $user->photos()->delete();
        });
    }
}

이 이벤트 리스너는 "사용자" 모델이 삭제되면 관련된 모든 "사진" 행을 자동으로 삭제합니다.

거래 관리:

To 참조 무결성을 유지하려면 삭제 프로세스를 트랜잭션 내에 포함하는 것이 좋습니다. 이렇게 하면 모든 데이터베이스 변경 사항이 원자적으로 이루어집니다. 다음 코드 조각은 이를 보여줍니다.

delete();

    // Commit the transaction if successful
    DB::commit();
} catch (\Exception $e) {
    // Rollback the transaction if an error occurs
    DB::rollBack();
}

이 단계를 따르면 Laravel에서 기본 행을 삭제할 때 관련 행의 자동 삭제를 구현하여 참조 무결성과 데이터 일관성을 보장할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3