如何在删除查询中设置限制



我尝试用DoctrineDBALConnection删除一些数据,我想删除重复的数据,所以我必须删除n-1个数据(如果n个数据相同)。

public function deleteDuplicateData(array $data) : bool
{
    $qb = $this->connection->createQueryBuilder();
    $qb->delete('myTable')
        ->where('id= :id')
        ->setParameter('id', $data['id'])
        ->setMaxResults($data['n']-1)
    ;
    return $qb->execute();
}

但是->setMaxResults($data['n']-1)不起作用,当我运行代码时,所有数据都将被删除。我尝试了这个->setMaxResults($data['n']-1)但它不起作用,所以我认为该方法->setMaxResults()不适用于删除方法。

我不能评论,所以为这个^^

是否可以计算数据库系统中具有重复数据的行 + 它们是否具有相同的 ID?如果是,您可以将 ammount - 1 存储到变量$duplicatedRows并使用 for 循环,如下所示:

for($i;$<=$duplicatedRow;$i++){
    //Your Code to delete something  
}

setMaxResults只在某些情况下起作用。如果不对其进行管理,它似乎会忽略它。

检查教义文档:https://www.doctrine-project.org/projects/doctrine1/en/latest/manual/dql-doctrine-query-language.html#driver-portability

使用以下函数设置限制

public function deleteDuplicateData(array $data) : bool
    {
        $limit = 10;
        $qb = $this->connection->createQueryBuilder();
        $qb->delete('myTable')
            ->where('id= :id')
            ->setParameter('client_id', $data['id'])
            ->setMaxResults($limit);
        return $qb->execute();
    }

相关内容

  • 没有找到相关文章

最新更新