>백엔드 개발 >PHP 튜토리얼 >Doctrine2에서 삭제 캐스케이드를 올바르게 구현하는 방법은 무엇입니까?

Doctrine2에서 삭제 캐스케이드를 올바르게 구현하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-04 04:30:291000검색

How to Properly Implement On Delete Cascade in Doctrine2?

Doctrine2: 삭제 계단식 이해

Doctrine2의 On 삭제 계단식 개념은 상위 레코드가 삭제될 때 하위 레코드를 자동으로 삭제할 수 있도록 허용합니다. 삭제됩니다. 이 기능은 참조 무결성을 유지하여 데이터 무결성을 보장합니다.

Docrine2에서 On Delete Cascade 구현

On Delete Cascade를 구현하려면 다음 두 가지 접근 방식이 있습니다.

  1. 객체 관계형 매핑(ORM) 수준:

    • 하위 엔터티 내의 연결에 cascade={"remove"}를 지정합니다.
    • 이는 상위 개체가 삭제될 때 연결된 모든 하위 개체를 제거하도록 Doctrine에 지시합니다. 그러나 데이터베이스 구조에는 영향을 미치지 않습니다.
  2. 데이터베이스 수준:

    • onDelete="CASCADE"를 추가하세요. 하위 엔터티에 있는 연결의 조인 열입니다.
    • 이는 참조된 상위 레코드가 삭제될 때 하위 레코드를 자동으로 삭제하는 데이터베이스 제약 조건을 생성합니다.

엔티티 수정

귀하의 예에서는 ORM 수준 접근 방식을 사용했지만 조인 열에서 onDelete="CASCADE" 속성이 누락되었습니다. 이를 수정하려면 Child.php 엔터티를 다음과 같이 수정하세요.

<code class="php">/**
 * @ORM\ManyToOne(targetEntity="Father", cascade={"remove"})
 * @ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE")
 *
 * @var Father
 */
private $father;</code>

注意事項

  • ORM 수준 계단식 cascade={"remove" } 현재 구현된 대로 하위 개체가 삭제되면 상위 개체도 삭제됩니다. 이는 일반적으로 바람직하지 않습니다.
  • 따라서 삭제 동작을 더 효과적으로 제어하려면 onDelete="CASCADE"와 함께 데이터베이스 수준 계단식 배열을 사용하는 것이 좋습니다.

위 내용은 Doctrine2에서 삭제 캐스케이드를 올바르게 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.