我尝试用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();
}