2012-02-10 2 views
8

내가 다음과 같은 클래스를 가지고 말 : 우리가 삭제할 때 Doctrine 2의 ManyToMany 관계에서 엔티티를 일괄 제거하는 방법은 무엇입니까?

class Store 
{ 
    /** 
    * @ManyToMany(targetEntity="PaymentMethod") 
    */ 
    protected $paymentMethods; 
} 

class PaymentMethod 
{ 
} 

PaymentMethod (또는 실제로 데이터베이스에서 제거하지 않고 비활성화), 우리는이 paymentMethod이 모든 Store::$paymentMethods 컬렉션에서 제거됩니다 것을 싶습니다. 지금까지

, 우리는이에 대한 접합 테이블에 원시 SQL 쿼리를 사용하고 :

DELETE FROM StorePaymentMethod WHERE paymentMethodId = ? 

는 교리, 바람직하게는 DQL에 있다고 할 수있는 방법이 있나요?

+0

나는 이것을 똑바로 들리게한다. Store 클래스의 목록에서 삭제 된 결제 수단을 삭제 하시겠습니까? DB에서 삭제하면 목록에서 제거되지 않습니다. – jere

+0

많은 사람들이 있다면,'PaymentMethod'에'$ stores' 콜렉션을 빈 콜렉션으로 설정하고 그것을 지속시킬 수 있습니까? 상호 링크가 레코드를 보관하지 않도록 메모리에있는 모든 Store 객체를 무효화해야합니다. 이상적인 세계에서 빈을 수행하기 위해 작성하는 접근 자 메소드는 상호 링크를 제거하는'상점 '을 통과합니다. – Orbling

답변

-2

이 줄에 뭔가가 있습니까?

$qb = $em->createQueryBuilder(); 

$qb->delete('StorePaymentMethod', 'spm') 
    ->where('spm.paymentMethodId = : paymentMethodId') 
    ->setParameter('paymentMethodId', $id); 

return $qb->getQuery()->getResult(); 
+1

StorePaymentMethod는 엔티티가 아니며 조인 테이블 일뿐입니다. 그래서 DQL에서는 불행히도 의미가 없습니다! – Benjamin

관련 문제