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()
が削除メソッドのために動作しないと思うので、それは動作しません。このためSRYが
を^^だから私は、コメントを傾けるセットの制限の機能以下
https://stackoverflow.com/questions/2630440/how-to-delete-duplicates-on-a:変数
$duplicatedRows
に1等のforループを使用 - はい、あなたはammountを保存することができれば-mysql-table重複を除去するためのすべての方法については、このエントリーをチェックアウトすることができます。もちろん、あなたの最善の策は、最初に重複したデータを取得しないように修正することです。 –私の仕事ではないので項目を確認できません。重複したエントリーを削除するスクリプトを作成する必要があります...あなたは正しいのですが、それを確認するのは簡単でしょうが、私はできません:/ –
おそらく、doctrineはこれをサポートしていません。それがオプションの場合、基になるデータベースが制限付きの削除をサポートしている場合、DQLなしでネイティブクエリを使用できます。 – Joe