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 중국어 웹사이트의 기타 관련 기사를 참조하세요!