Doctrine2를 사용한 삭제 캐스케이드 이해
Doctrine2는 관련 엔터티와 작업할 때 캐스케이드 동작을 구성할 수 있는 유연성을 제공합니다. 그러나 일반적인 오해는 엔터티 연결에서 cascade={"remove"}를 설정하면 데이터베이스의 외래 키 열에 ON DELETE CASCADE 옵션이 자동으로 추가된다는 것입니다.
Doctrine2에는 두 가지 고유한 유형이 있습니다. 계단식:
1. ORM 수준 캐스케이드:
2. 데이터베이스 수준 계단식:
질문에 제공된 예에서는 ORM 수준 캐스케이드를 사용합니다. 상위 항목을 삭제할 때 연결된 하위 개체를 올바르게 제거하지만 데이터베이스에 ON DELETE CASCADE 옵션을 생성하지는 않습니다. 이를 달성하려면 다음 수정이 필요합니다.
<code class="php">/** * @ORM\ManyToOne(targetEntity="Father", cascade={"remove"}) * * @ORM\JoinColumns({ * @ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE") * }) * * @var Father */ private $father;</code>
예제와 같이 ORM 수준 캐스케이드를 사용하면 하위 개체가 제거될 때 상위 개체도 제거된다는 점에 유의하는 것이 중요합니다. 이는 의도한 동작이 아닐 가능성이 높습니다.
위 내용은 Doctrine2는 ON DELETE CASCADE를 사용하여 계단식 동작을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!