Php 删除zend framework 2中的批量项目

Php 删除zend framework 2中的批量项目,php,doctrine-orm,zend-framework2,Php,Doctrine Orm,Zend Framework2,我想在我的ZF2项目中允许批量项目删除 我在使用教义 我不知道如何将批量项目传递给删除操作 如何将所有项目id传递给控制器,以便能够删除?您可以通过几种不同的方式实现批量删除: 1)使用DQL <?php $ids = [1, 2, 3, 4]; $query = $em->createQuery('DELETE FROM App\\Entity\\User u WHERE u.id IN (:ids)'); $query->setParameter('ids', $ids);

我想在我的ZF2项目中允许
批量项目删除

我在使用教义

我不知道如何将批量项目传递给删除操作


如何将所有项目id传递给控制器,以便能够删除?

您可以通过几种不同的方式实现批量删除:

1)使用DQL

<?php
$ids = [1, 2, 3, 4];
$query = $em->createQuery('DELETE FROM App\\Entity\\User u WHERE u.id IN (:ids)');
$query->setParameter('ids', $ids);
$query->execute();

您可以通过几种不同的方式实现批量删除:

1)使用DQL

<?php
$ids = [1, 2, 3, 4];
$query = $em->createQuery('DELETE FROM App\\Entity\\User u WHERE u.id IN (:ids)');
$query->setParameter('ids', $ids);
$query->execute();

谢谢您的回答,FYKI我现在正在使用方法2。但是如何从视图文件传递这些$id呢?这就是我面临的问题。谢谢你的回答,FYKI我现在正在使用方法2。但是如何从视图文件传递这些$id呢?这就是我面临的问题。
<?php
$batchSize = 20;
$i = 0;
$q = $em->createQuery('SELECT u FROM App\\Entity\\User u');
$iterableResult = $q->iterate();
while (($row = $iterableResult->next()) !== false) {
    $em->remove($row[0]);
    if (($i % $batchSize) === 0) {
        $em->flush(); // Executes all deletions.
        $em->clear(); // Detaches all objects from Doctrine!
    }
    ++$i;
}
$em->flush();
<?php
class UserController extends AbstractActionController
{
    public function deleteAction() 
    {
        $query = $this->getRequest()->getQuery();

        $users = $em->getRepository('App\\Entity\\User')->findById($query['ids']);
        foreach($users as $user) {
             $em->remove($user);
        }
        $em->persist();
    }
}