删除attribute = x的几行

use*_*149 1 dql doctrine-query symfony doctrine-orm

我需要删除image_id = x适用的所有行

DELETE FROM  `ImageVoters` WHERE image_id =1
Run Code Online (Sandbox Code Playgroud)

如何使用DQL执行此操作?

由于我试图一次删除几行,remove()函数将无法正常工作

EntityManager#remove() expects parameter 1 to be an entity object, array given.

 $em = $this->getDoctrine()->getManager();
 $query = $em->createQuery('SELECT u FROM GabrielUploadBundle:ImageVoters u WHERE u.image_id = 1');
 $db_imageactions = $query->getResult();
 $em->remove($db_imageactions);
 $em->flush();
Run Code Online (Sandbox Code Playgroud)

这是有效的代码

    $qb = $em->createQueryBuilder();
    $qb->delete('GabrielUploadBundle:ImageVoters', 'v')
        ->where($qb->expr()->eq('v.image_id', ':imageId'))
        ->setParameter('imageId', $current_imageId);

    $qb->getQuery()->execute();
Run Code Online (Sandbox Code Playgroud)

acr*_*bat 5

您可以创建ORM queryBuilder,以使用内部orm方法创建干净/安全的查询对象

$qb->delete('My\Image\Namespace\ImageVoters', 'ivoter')
   ->where($qb->expr()->eq('ivoter.image_id', ':imageId')
   ->setParameter('imageId', 1);

$qb->getQuery()->execute();
Run Code Online (Sandbox Code Playgroud)