zenstruck/collection
Helpers for iterating/paginating/filtering collections (with Doctrine ORM/DBAL implementations and batch processing utilities).
v0.8.0
918K downloads/mo
#3279 most downloaded on Packagist
zenstruck/collection
What this package is like to depend on
Last release 8 months ago
08 Dec 2025
Ships fairly regularly
a new release about every 4 months
Nearly every release is documented
notes for 9 of 10 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
10 releases · first in 2023
1 release in the last 12 months
see the full history below
Release timeline
10 releases · Jan 2023 to Dec 2025Releases
latest 10-
v0.8.008 Dec 2025Release notes
Open source → -
v0.7.004 Jul 2025 -
v0.6.010 May 2025 -
v0.5.023 Nov 2024Release notes
Open source →f9d0ee7 minor: adjust test matrix (#48) by @kbond
c614171 fix(ORM): normalize with modifier when iterating (#48) by @kbond
4bbf226 minor: test exact iterator matches (#48) by @kbond
4ebaad6 minor: phpstan exceptions (#46) by @kbond
ad67bb9 minor: fix test/foundry deprecations (#46) by @kbond
4020a02 feat: allowForObjectattribute to configureEntityRepositoryservices (#45) by @kbond
1521cf1 feat: support pagerfanta 4.0+ (#44) by @kbond
24b90f6 feat: support orm 3+ and dbal 4+ (#44) by @kbond
c2f1b95 feat(grid): allow callback for searchable by @kbond
72c8e48 feat: AutoFilter converts lists toInby @kbond
a685c02 feat:Column::sort()returns default sort if applicable by @kbond
e78e152 minor: remove unneeded dependency by @kbond
0c952ef feat: add some grid paginator twig templates by @kbond
cfad537 feat: data grid (#43) by @kbond
4e9aa29 feat(spec): addBetweenspecification by @kbond
1f45e3d feat!: use readonly props for specification data by @kbond
97f4644 minor: adjust fixcs ci php version by @kbond
c745588 feat: Specification system (#38) by @kbond
adcb30e feat: require php 8.1+ and Symfony 6.4+ by @kbond -
v0.4.028 Feb 2024Release notes
Open source →39e750f fix(orm): failing test with
--prefer-lowestby @kbond
4f0924c fix(orm): handle delete withEntityResultby @kbond
0e73aff fix(orm):EntityResultQueryBuilderimprovements (fixes #40) by @kbond
a3c8992 fix(orm): makeEntityWithAggregatesa mixin (fixes #35) by @kbond
6ef122d feat!: removeRepository(closes #36) by @kbond
cb45125 minor: optimize creating array collection viacollect()by @kbond
1684c70 feat: addRepositoryinterface by @kbond
0bc6dc3 feat!: renameCollection::firstWhere()tofind()by @kbond
ac03dd5 minor: cs fixes by @kbond
2a9438f fix: doctrine/collection 2.0+ support by @kbond
3640995 feat: addDoctrineBridgeCollection(#34) by @kbond
5487271 minor: refactor (#34) by @kbond -
v0.3.015 Dec 2023 -
v0.2.204 Aug 2023Release notes
Open source →1f7148c fix(orm): orm inconsistency by @kbond
9273a47 fix(orm): prevent exception onnullresult by @kbond -
v0.2.114 Jul 2023Release notes
Open source →5401c5f minor(orm): refactor tests by @kbond
f4b1c48 security(orm): prevent passing callable strings tofind()/query()by @kbond -
v0.2.027 Jun 2023Release notes
Open source →d0ee92a feat(doctrine)!: rename
ObjectRepository::filter()toquery()by @kbond
90e7307 feat(doctrine): addObjectRepository::NONEto be used withfilter()by @kbond
a5c8be1 fix(doctrine): test compatibility by @kbond
4bfc78e feat(doctrine):ORMServiceEntityRepositorychanges by @kbond
3c988c5 minor(doctrine): ensure can fetch single result by @kbond
c365e90 feat(doctrine): addEntityResult::disableFetchJoins()by @kbond
2b8c3dd feat(doctrine): addORM(Service)EntityRepositorybridges by @kbond
44d540e feat(doctrine): addEntityRepositoryBridge::createQueryBuilder()by @kbond
2bece51 feat!: refactor doctrine integration, add Symfony bundle (#32) by @kbond
ffd6bed minor: refactorLazyCollectionby @kbond
3a9508f feat!: renameArrayCollection::keyExists()tohas()by @kbond
ee1c700 feat!: renameArrayCollection::in()tocontains()by @kbond
28dbda3 feat!: make ArrayCollection immutable by @kbond
46e3f6a feat!: make paginator non-strict by default by @kbond
93e7e90 minor: adjustZenstruck\collect()default type and fix sca by @kbond
999a9e9 feat!: remove the ability to pass null toLazyCollectionby @kbond
d0087d6 minor: adjustFactoryCollectiondoc blocks by @kbond
17786b0 feat!: removeDBAL\Repository|Resultby @kbond
f571ca7 sca: removearray-keyrequirement forCollectionkey (#31) by @kbond
f0de13c feat: add methods toCollection(#31) by @kbond
c0f5a25 minor: add key template to Page/Pages (#31) by @kbond
a39426e minor: inline phpstan ignores (#31) by @kbond
10b8de0 feat!: removeLazyCollection::toArray()(#31) by @kbond
27487b8 feat!: removeCollection::sum()(#31) by @kbond
0dfb836 feat!: removeCollection::mapWithKeys()(#31) by @kbond
f440f32 feat!: removeIterable|ArrayCollection::reject()(#31) by @kbond
7ea6954 feat!: renamePageCollection->Pagesby @kbond
2a73a4a minor(doctrine): use attribute mapping for entity fixtures (#30) by @kbond
e95da00 feat: support uninitialized doctrine collections inLazyCollection(#30) by @kbond
dfdeaeb feat!: removeDoctrineCollection(#30) by @kbond
4fa47da fix(orm): fix failing tests by @kbond
cb81aa2 fix(orm): revertResult::getIterator()change by @kbond
4a3d99a feat(batch): refactor batch processor/iterator by @kbond
142300c fix: self -> static by @kbond
bbf3264 feat!: refactory dbal (#28) by @kbond
8248c0b feat!: adjust PagerfantaAdapter namespace (#27) by @kbond
cedbecd feat!: remove specification system (#27) by @kbond
57252db minor: fix sca by @kbond
8f0be35 feat: allow callingLazyCollection::eager()if wrapping\Generatorby @kbond
8d5c88d feat!: removeZenstruck\arr()by @kbond
b42dde1 feat(specification): add Matchable interface by @kbond -
v0.1.016 Jan 2023Nothing published for this version