1
제가 제품 피드를 가지고 있고 각 피드에 많은 제품이 있습니다. 매우 간단한 설정과 같은 :Doctrine 2 : ManyToOne cascade remove는 참조 된 엔티티가 삭제되도록합니다.
공급 모델 :
/**
* Class Feed represents a single feed as supplier by a supplier
* @package App\Model
* @Entity @Table(name="feeds")
*/
class Feed
{
/**
* @var int
* @Id @Column(type="integer") @GeneratedValue
*/
protected $id;
}
제품 모델 : 나는 모든 제품을 원하기 때문에 당신이, 내가 사용할 수 계단식 한 볼 수 있듯이 이제
/**
* Class Product is the base for either supplied and current products
* @package App\Model
*/
class Product
{
/**
* @var int
* @Id @Column(type="integer") @GeneratedValue
*/
protected $id;
/**
* @var Feed
* @ManyToOne(targetEntity="App\Model\Feed", cascade={"remove"})
* @JoinColumn(name="id_feed", referencedColumnName="id", onDelete="CASCADE")
*/
protected $feed;
}
피드가 삭제되면 자동으로 삭제됩니다.
그러나 ... 제품을 삭제하면 현재 피드도 삭제됩니다. 나는 그 관계가 어떻게 설정되어 있는지와 관련이 있다고 생각하지만, 그것이 틀린 부분을 파악할 수는 없다.
누구든지이 상황에 대해 더 많은 것을 보여줄 수 있습니까?
소유 한 경우 ORM은 무시 귀하의 제품에 매핑 된 "OneToMany". 사실, 단방향 관계를 정의했습니다. 당신은 양방향 관계를 정의해야합니다 – Delphine
설명 주셔서 감사합니다! 종류의 새로운 교리. 저는 CASCADE가 MySQL에서 어떻게 작동하는지 생각하고있었습니다. 여러분이 고아에서 정의하는 것만으로 Doctrine에서 비슷한 접근 방식을 취할 수 있다고 생각했습니다. –
Orm은 나를위한 퍼즐이기도합니다! 그러나 일단 잘 설정되면 그것은 마술과 같습니다. 이 게시물에서 자세한 내용을 확인할 수 있습니다 : http://stackoverflow.com/questions/25515007/doctrine-cascade-remove-vs-orphanremoval-true?rq=1. – Delphine