Как массово удалить сущности в отношениях ManyToMany в Doctrine 2? - PullRequest
8 голосов
/ 10 февраля 2012

Скажите, у меня есть следующие классы:

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

class PaymentMethod
{
}

Когда мы удаляем (или просто отключаем, без фактического удаления из базы данных) PaymentMethod, мы бы хотели, чтобы это paymentMethod было удалено из всех Store::$paymentMethods коллекций.

До сих пор мы использовали необработанные SQL-запросы к соединительной таблице для этого:

DELETE FROM StorePaymentMethod WHERE paymentMethodId = ?

Есть ли способ сделать это в Doctrine, предпочтительно в DQL?

1 Ответ

0 голосов
/ 08 марта 2012

Что-то в этом роде?

$qb = $em->createQueryBuilder();

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

return $qb->getQuery()->getResult();
...