2017-12-27 42 views
1

액티비티와 BulleManager 두 엔티티가 있습니다. OneToMany - ManyToOne을 사용하여 서로 간의 관계를 유지합니다. 문제는 내가 BulleManager 엔티티의 행을 삭제할 때 Activities 엔티티의 관련 행이 삭제되고 그 동작이 내가 좋아하지 않는다는 것입니다. 소유 사이드 (BulleManager) 엔티티가 삭제 될 때 반대쪽 엔티티 (활동)에 "NULL"을 설정하기 만하면됩니다.Doctrine 심포니 OneToMany - ManyToOne 관계로 엔티티를 제거합니다.

class Activities 
{ 
    /** 
     * @ORM\ManyToOne(targetEntity="BulleManager", 
     cascade={"persist"}, inversedBy="activities") 
    * @ORM\JoinColumn(name="bulle_manager_id", 
    referencedColumnName="id", nullable=true, onDelete="SET NULL") 
    */ 
    protected $bulleManager; 
... 
} 

class BulleManager 
{ 
    /** 
    * @ORM\OneToMany(targetEntity="Activities", 
    mappedBy="bulleManager", cascade={"remove"}) 
    */ 
    private $activities; 
} 

귀하의 솔루션을 환영합니다.

답변

2

BulleManager 엔티티에서 cascade={"remove"} 만 제거하면됩니다.

cascade={"remove"}은 상위 테이블 (BulleManager)에서 레코드가 삭제되면 하위 테이블 (활동)의 모든 종속 레코드를 삭제합니다.

이제 BulleManager가 삭제되면 활동 테이블에서 bullemanager_id에서 NULL으로 설정됩니다.

그리고, 사용하여 데이터베이스 스키마를 업데이트 깜빡하지 마십시오

php bin/console doctrine:schema:update 
+0

투쟁은 내가 =이 { "제거"} BulleManager에서 폭포를 제거 할 때, 제거가에 영향을 미치지 않는다는 것입니다 BulleManager 엔터티에 대한 데이터베이스 (행이 삭제되지 않음). ** 참고 ** 나는 doctrine의 remove() 메소드를 사용하여 엔티티를 제거합니다. – Heri

+0

아, 작동합니다. 실제로 문제는 계단식이나 관계에서 오는 것이 아니라 컨트롤러에서 코드하는 방식입니다. 어쨌든 답변 해 주셔서 감사합니다. – Heri

+0

문제는 없습니다. 감사 –