如何在条令2中批量删除ManyToMany关系中的实体


How to bulk remove entities in a ManyToMany relationship in Doctrine 2?

假设我有以下类:

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

当我们删除(或者只是禁用,而不从数据库中实际删除)PaymentMethod时,我们希望从所有Store::$paymentMethods集合中删除该paymentMethod

到目前为止,我们一直在连接表上使用原始SQL查询:

DELETE FROM StorePaymentMethod WHERE paymentMethodId = ?

有没有一种方法可以在条令中做到这一点,最好是在DQL中?

这是什么?

$qb = $em->createQueryBuilder();
$qb->delete('StorePaymentMethod', 'spm')
   ->where('spm.paymentMethodId = : paymentMethodId')
   ->setParameter('paymentMethodId', $id);
return $qb->getQuery()->getResult();