>  기사  >  백엔드 개발  >  Doctrine2에서 \"계단식 삭제\"를 구현하는 방법은 무엇입니까?

Doctrine2에서 \"계단식 삭제\"를 구현하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-03 00:19:02726검색

How to Implement

Doctrine2를 사용한 삭제 계단식 구현 시

데이터베이스 관계 관리를 위해 Doctrine2를 활용하는 경우 데이터베이스 관계 관리 시 하위 행을 자동으로 삭제해야 할 수도 있습니다. 상위 행 삭제. 이는 "계단식 삭제 시" 옵션을 통해 달성됩니다.

구체적인 예에서 하위 및 아버지 항목을 정의한 후 "계단식 삭제 시" 옵션이 생성되지 않는 문제가 발생합니다. 데이터베이스에서. 이는 ORM 수준 계단식 배열(연결에서 cascade={"remove"}로 지정)을 사용했기 때문일 수 있습니다.

ORM 수준 계단식 배열

ORM 수준 캐스케이드는 UnitOfWork 내에서 삭제 프로세스를 처리하여 개체 구조에 영향을 주지만 데이터베이스 자체에는 영향을 미치지 않습니다. ORM 수준 계단식 배열을 사용하여 개체를 제거할 때 UnitOfWork는 연결된 개체를 반복하여 해당 개체도 제거합니다.

데이터베이스 수준 계단식 배열

ORM 수준과 대조적 계단식, 데이터베이스 수준 계단식의 경우 연결의 조인 열에 onDelete="CASCADE"를 지정해야 합니다. 이 접근 방식은 데이터베이스의 외래 키 열에 "계단 삭제 시" 제약 조건을 추가하여 상위 행이 제거될 때 하위 행이 자동으로 삭제되도록 합니다.

문제를 해결하려면 하위 엔터티를 다음과 같이 수정하세요. :

<code class="php">namespace Acme\CascadeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="child")
 */
class Child {

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORM\ManyToOne(targetEntity="Father", cascade={"remove"})
     *
     * @ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE")
     *
     * @var father
     */
    private $father;
}</code>

위 내용은 Doctrine2에서 \"계단식 삭제\"를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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