Add findByCriteriaIterator method to AuditTrailRepository for streaming large datasets

- Introduced a memory-efficient iterable result method to handle large datasets.
- Ensures data is streamed without loading all rows into memory, improving performance for extensive audit trail processing.
This commit is contained in:
2026-02-17 18:50:00 +01:00
parent 419772060b
commit 3fbdedc239

View File

@@ -85,6 +85,21 @@ class AuditTrailRepository extends ServiceEntityRepository
->getQuery()->getSingleScalarResult();
}
/**
* Returns an iterable result set for streaming over large datasets without loading all rows into memory.
*
* @param array{subjects?: list<Subject>, from_date?: \DateTimeImmutable, to_date?: \DateTimeImmutable, by_users?: list<User>} $criteria
*
* @return iterable<AuditTrail>
*/
public function findByCriteriaIterator(array $criteria): iterable
{
return $this->buildByCriteriaQuery($criteria)
->orderBy('audit.occurredAt', 'DESC')
->getQuery()
->toIterable();
}
public function deleteBefore(\DateTimeImmutable $date): void
{
$this->createQueryBuilder('audit')