我尝试用Doctrine\DBAL\Connection
删除一些数据,我想删除重复数据,所以我必须删除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()
不适用于删除方法。
答案 0 :(得分:0)
使用以下功能设置限制
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();
}
答案 1 :(得分:0)
我不能发表评论,所以请为此^^
是否可以在数据库系统中计算具有重复数据的行+是否具有相同的ID?如果是,您可以将ammount - 1存储到变量$duplicatedRows
并使用for循环,如:
for($i;$<=$duplicatedRow;$i++){
//Your Code to delete something
}
答案 2 :(得分:0)
setMaxResults
仅在某些情况下有效。如果不管理,它似乎会忽略它。