2014-09-12 2 views
1

교리의 일대일 관계를 파괴 :나는 교리의 문서에서 같은 관계가

Product: 
    type: entity 
    oneToOne: 
    shipping: 
     targetEntity: Shipping 
     joinColumn: 
     name: shipping_id 
     referencedColumnName: id 

나는 Shipping 엔티티를 삭제하려고하고 있습니다 만 Product의 행에 참조가 있기 때문에 외래 키 제약 조건 예외가 발생합니다. 이 문제를 처리하는 적절한 방법은 무엇입니까? 이 일을 처리하기 위해 내가 추가 할 수있는 뭔가가 yaml에 있습니까? 아니면 아래 같은 것을 어떻게해야합니까 :

$product->setShipping(null); 
$entityManager->persist($product); 
$entityManager->remove($shipping); 
$entityManager->flush(); 
+0

'$ em-> remove ($ shipping);를 실행하려고 했습니까? $ em-> flush();'제품에 배송을 'null'로 설정하지 않고? –

+0

@igor 예 했어요. 외래 키 제약 조건 예외가 발생했습니다 – David

답변

0

당신은 설정해야 onDelete 옵션 당신이 단지를 삭제하려는 경우 Shipping가 너무 제거 또는 SET NULL의에되도록하려면 CASCADEProduct.

Product: 
    type: entity 
    oneToOne: 
    shipping: 
     targetEntity: Shipping 
     joinColumn: 
     name: shipping_id 
     referencedColumnName: id 
     onDelete: "SET NULL" 

자세한 내용은 Doctrine docs에서 확인할 수 있습니다.

+0

나는 프로젝트를 전혀 삭제하지 않으려 고합니다. 나는 아직도 그것을 원한다. ''SET NULL ''에 대해서 어디서 읽었습니까? – David

+0

죄송합니다.이 경우 'onDelete'를 Shipping 엔터티에 넣어야합니다. 나는 문서에서 * SET NULL *을 보지 못했지만, 이미 그것이 존재한다는 것을 알았다. 그것은 MySQL의 행동입니다. 배송 엔티티의 – lsouza

+0

은 yaml의 'type' 키와 같은 수준입니까? – David

관련 문제