sonata-project/doctrine-orm-admin-bundle
Integrate Doctrine ORM into the SonataAdminBundle
4.21.0
18M downloads/mo
#2123 most downloaded on Packagist
sonata-project/SonataDoctrineORMAdminBundle
What this package is like to depend on
Last release 7 months ago
05 Jan 2026
Release timing varies
gaps range from 2 weeks to 10 months
Most releases are documented
notes for 101 of 118 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
122 releases · first in 2013
3 releases in the last 12 months
see the full history below
Release timeline
122 releases · Mar 2013 to Jan 2026
2014
2016
2018
2020
2022
2024
2026
Releases
latest 60 of 122-
4.21.005 Jan 2026 -
4.20.018 Dec 2025 -
4.19.012 Oct 2025Release notes
Open source →Release notes
Open source → -
4.18.004 Feb 2025 -
4.17.124 Apr 2024Release notes
Open source →Fixed
- [#1807] DateTimeRangeFilter when both the
startorendfield are not empty. (@VincentLanglet)
Release notes
Open source →Fixed
- [#1807] DateTimeRangeFilter when both the
startorendfield are not empty. (@VincentLanglet)
- [#1807] DateTimeRangeFilter when both the
-
4.17.013 Apr 2024Release notes
Open source →Added
- [#1805] Allow to pass extra field options in ClassFilter (@VincentLanglet)
Release notes
Open source →Added
- [#1805] Allow to pass extra field options in ClassFilter (@VincentLanglet)
-
4.16.110 Apr 2024Release notes
Open source →Fixed
- [#1803] UidFilter
global_searchdefault value (@VincentLanglet) - [#1800] Catch possible null value error in
ModelFilter(@core23)
Release notes
Open source →Fixed
- [#1803] UidFilter
global_searchdefault value (@VincentLanglet) - [#1800] Catch possible null value error in
ModelFilter(@core23)
- [#1803] UidFilter
-
4.16.026 Feb 2024Release notes
Open source →Release notes
Open source → -
4.15.004 Dec 2023 -
4.14.119 Nov 2023 -
4.14.023 Oct 2023 -
4.13.013 May 2023Release notes
Open source →Added
- [#1755] Support for
sonata-project/form-extensions2.0 (@jordisala1991) - [#1738] Support for
symfony/uidas primary keys usingUuidorUlid(@jordisala1991)
Fixed
- [#1738]
ModelFilterfor related entities using compound ids (@jordisala1991) - [#1738]
ModelFilterwhen filtering for not equals and using an inverse side relation (@jordisala1991)
- [#1755] Support for
-
4.12.025 Apr 2023Release notes
Open source →Changed
- [#1737] Bump
sonata-project/form-extensionsto ^1.19 (@jordisala1991)
Fixed
- [#1705] Fix export for admins sorted on a property that belongs to a one to many. (@jordisala1991)
Removed
- [#1739] Support for Symfony 4.4 (@jordisala1991)
- [#1739] Support for Twig 2 (@jordisala1991)
- [#1737] Bump
-
4.11.009 Apr 2023Release notes
Open source →Changed
- [#1734] Exception message at
ModelManager::batchDelete()in order to provide more details about the failed batch operation (@phansys)
Fixed
- [#1722] Avoid dependency of
doctrine/common(@jordisala1991)
- [#1734] Exception message at
-
4.10.009 Mar 2023Release notes
Open source →Removed
- [#1714] Drop support for
doctrine/dbal^2.0. (@jordisala1991) - [#1714] Drop support for
doctrine/persistence^2.0. (@jordisala1991) - [#1715] Support for PHP 7.4
- [#1715] Support for Symfony 6.0 and 6.1
- [#1714] Drop support for
-
4.9.129 Dec 2022Release notes
Open source →Fixed
- [#1690] ProxyQuery and ProxyQueryInterface are covariant (@VincentLanglet)
-
4.9.001 Dec 2022Release notes
Open source →Deprecated
- [#1703] Passing a null offset to
AuditReader::findRevisionHistory(@VincentLanglet)
Fixed
- [#1700] Fix batch delete for more than 20 entities. (@jordisala1991)
- [#1703] Passing a null offset to
-
4.8.028 Sep 2022Release notes
Open source →Fixed
- [#1695] Fix batch delete on entities with json columns on PostgreSQL. (@jordisala1991)
-
4.7.028 Aug 2022Release notes
Open source →Added
- [#1691] ModelManager::supportsQuery now supports AbstractQuery (@djpretzel)
- [#1691] ModelManager::execute now supports AbstractQuery (@djpretzel)
-
4.6.022 Aug 2022Release notes
Open source →Added
- [#1687] Generics for ProxyQueryInterface and ProxyQuery (@VincentLanglet)
-
4.5.017 Aug 2022Release notes
Open source →Added
- [#1685] ModelManager now implements ProxyResolverInterface (@VincentLanglet)
Fixed
- [#1685] SonataAdminBundle 4.17 deprecations. (@VincentLanglet)
-
4.4.002 Aug 2022 -
4.3.322 Jul 2022Release notes
Open source →Fixed
- [#1677] Display of advanced filter for CounterFilter, NumberFilter, StringFilter and StringListFilter. (@VincentLanglet)
-
4.3.221 Jul 2022Release notes
Open source →Fixed
- [#1674] Fix missing 'operator_type' array value returned in
AbstractDateFilter:: getFormOptions()bug to avoid not rendered advanced filter options in DateFilter or DateTimeFilter. (@davidromani)
- [#1674] Fix missing 'operator_type' array value returned in
-
4.3.113 Jul 2022Release notes
Open source → -
4.3.024 May 2022Release notes
Open source → -
4.2.829 Mar 2022Release notes
Open source →Fixed
- [#1646] The lastpage is correctly set to 1 when there is no results. (@VincentLanglet)
-
4.2.704 Mar 2022 -
4.2.601 Mar 2022Release notes
Open source →Fixed
- [#1639] Add "sortBy" entity to "select" part of DQL to fix sorting on ManyToOne column (@willemverspyck)
-
4.2.523 Feb 2022Release notes
Open source →Fixed
- [#1637] Fixed smart pagination disabling output walkers when the orderBy is set to a ToMany at proxy level. (@jordisala1991)
-
4.2.423 Feb 2022 -
4.2.314 Feb 2022 -
4.2.216 Jan 2022 -
4.2.127 Nov 2021Release notes
Open source →Fixed
- [#1583] Paginator set useOutputWalkers to false for query with joins (@ossinkine)
-
4.2.016 Nov 2021Release notes
Open source →Added
- [#1562] Added support for Symfony 6. (@jordisala1991)
Fixed
- [#1573] Fixed using ModelFilter with ModelAutocompleteType (@willemverspyck)
- [#1571] Fixed non mapped
CallbackFilterdatagrid filter. (@toooni)
-
4.1.031 Oct 2021Release notes
Open source →Added
- [#1558] Added support for Doctrine DBAL 3. (@jordisala1991)
Changed
- [#1545]
field_optionsare automatically passed to the Filter when anEntityTypeor aModelAutocompleteTypeis used. (@VincentLanglet)
Deprecated
- [#1545]
ModelAutocompleteFilterin favor ofModelFilterwith afield_typeModelAutocompleteType(@VincentLanglet) - [#1547] Calling
ModelManager::getEntityManager()(@VincentLanglet)
Removed
- [#1559] Removed support for Symfony 5.2 (@jordisala1991)
-
4.0.006 Sep 2021Release notes
Open source →Changed
- [#1523] Do not set a default route option to
FieldDescriptioninFieldDescriptionFactory(@VincentLanglet)
- [#1523] Do not set a default route option to
-
4.0.0-rc.228 Aug 2021 pre-releaseRelease notes
Open source →Fixed
- [#1510]
AuditReadercompatibility with [email protected] (@VincentLanglet)
- [#1510]
-
4.0.0-rc.110 Aug 2021 pre-releaseRelease notes
Open source →Added
- [#1458]
EmptyFilter(@VincentLanglet)
Changed
- [#1480]
Pager::getCurrentPageResults()does not returnPaginatoranymore. (@VincentLanglet)
- [#1458]
-
4.0.0-alpha-209 May 2021 pre-releaseRelease notes
Open source →Added
- [#1412] Add compatiblity with all SonataAdmin 4.0 versions (@jordisala1991)
Changed
- [#1421] Use
FilterDatainstead ofarrayin filters. (@VincentLanglet) - [#1438] Add final to abstract classes method. (@VincentLanglet)
Fixed
- [#1435] BatchDelete method. (@VincentLanglet)
-
4.0.0-alpha-111 Apr 2021 pre-release -
3.35.323 Feb 2022Release notes
Open source →Fixed
- [#1635] Fixed smart pagination disabling output walkers when the orderBy is set to a ToMany at proxy level. (@jordisala1991)
-
3.35.221 Jan 2022 -
3.35.127 Nov 2021Release notes
Open source →Fixed
- [#1585] Paginator set useOutputWalkers to false for query with joins (@JustDylan23)
-
3.35.020 Jul 2021Release notes
Open source →Added
- [#1470]
global_searchoption to theStringFilter(@VincentLanglet) - [#1457]
treat_null_asoption to BooleanFilter (@VincentLanglet) - [#1477]
GroupableConditionAwareInterface(@VincentLanglet)
Deprecated
- [#1477] "or_group" option in
Filterobjects (@VincentLanglet) - [#1477]
Filter::$groupedOrExpressions(@VincentLanglet)
Fixed
- [#1473] Deprecation from SonataAdminBundle 3.x (@dmaicher)
- [#1470] Stop using
ChoiceTypeFilterfor global search (@VincentLanglet) - [#1477] Not resetting
Filter::$groupedOrExpressionsstatic property (see sonata-project/SonataAdminBundle#7096) (@VincentLanglet)
- [#1470]
-
3.34.313 Jun 2021Release notes
Open source →Fixed
- [#1455] Export for admin with fetch join in the
configureQuery()method (@VincentLanglet)
- [#1455] Export for admin with fetch join in the
-
3.34.231 May 2021Release notes
Open source →Fixed
- [#1444] Fixed issue where pagination of large dataset would take very long time or cause database engine to swap even for simplest queries without joins. (@alfabetagama)
-
3.34.119 May 2021 -
3.34.002 May 2021Release notes
Open source →Changed
- [#1425]
ProxyQuery::execute()is now returning a Paginator instead of an array. (@VincentLanglet)
Deprecated
- [#1427]
templates.formandtemplates.filterconfig (@VincentLanglet) - [#1428] Deprecated not adding
FilterDataas type declaration of argument 4 in the callable passed toCallbackFilter(@franmomu)
Fixed
- [#1427] Always merge
SonataDoctrineORMAdminform and filter templates. (@VincentLanglet) - [#1427] Using
sonata_adminconfiguration. (@VincentLanglet) - [#1425] Support for fetch join with simple pager. (@VincentLanglet)
- [#1425]
-
3.33.019 Apr 2021Release notes
Open source →Added
- [#1416] "force_case_insensitivity" option to
StringFilterin order to force the database to ignore the case sensitivity when matching filters. (@phansys)
Changed
Deprecated
Fixed
- [#1416] "force_case_insensitivity" option to
-
3.32.106 Apr 2021Release notes
Open source →Fixed
- [#1393] Added missing filter declaration in the config (@VincentLanglet)
-
3.32.030 Mar 2021Release notes
Open source →Added
- [#1355]
ModelManager::reverseTransform()(@VincentLanglet) - [#1350] Added
FieldDescriptionFactoryclass (@VincentLanglet)
Deprecated
- [#1341] Deprecated the
Sonata\DoctrineORMAdminBundle\Filter\EmptyFilterservice since its class is already deprecated since version 3.27 (@dmaicher) - [#1355]
ModelManager::modelReverseTransform()(@VincentLanglet) - [#1350]
AbstractTypeGuesserclass (@VincentLanglet) - [#1350]
FilterTypeGuesser::guessType()(@VincentLanglet) - [#1350]
TypeGuesser::guessType()(@VincentLanglet) - [#1350]
ModelManager:: getParentMetadataForProperty()(@VincentLanglet) - [#1350]
ModelManager:: getNewFieldDescriptionInstance()(@VincentLanglet) - [#1350]
ModelManager:: getModelInstance()(@VincentLanglet)
Fixed
- [#1376] Fixed triggering deprecation because audit reader is not tagged (@franmomu)
- [#1374] Fixed deprecations about not implementing
FieldDescriptionInterfacemethods (@franmomu) - [#1358] Resulting
WHEREclause fromFilter::applyWhere()when usingORconditions on queries that already have previous conditions (@phansys) - [#1368] Fetch join queries for Pager (@VincentLanglet)
- [#1368] Pager when using entity inheritance (@VincentLanglet)
- [#1365] Missing argument 2 in calls to
trigger_error()(@phansys)
- [#1355]
-
3.31.010 Mar 2021Release notes
Open source →Added
- [#1335] Support for symfony/config:^5.2 (@phansys)
- [#1335] Support for symfony/dependency-injection:^5.2 (@phansys)
- [#1335] Support for symfony/http-foundation:^5.2 (@phansys)
- [#1319]
Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQueryInterface::getDoctrineQuery()(@VincentLanglet)
Changed
Deprecated
- [#1333] Deprecate passing arguments to
ProxyQuery::execute()method (@VincentLanglet) - [#1326] Not passing a
Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQueryInterfaceas argument 2 ofModelManager::addIdentifiersToQuery()(@VincentLanglet) - [#1326] Not passing a
Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQueryInterfaceas argument 2 ofModelManager::batchDelete()(@VincentLanglet) - [#1319] Class
Sonata\DoctrineORMAdminBundle\Datagrid\OrderByToSelectWalker(@VincentLanglet) - [#1319]
Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::getFixedQueryBuilder()(@VincentLanglet) - [#1319]
Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::getSingleScalarResult()(@VincentLanglet) - [#1323] Not passing a
ManagerRegistryas first argument ofObjectAclManipulator(@VincentLanglet)
Fixed
- [#1319] Do not display multiple times the same row in the admin list and the export list (@VincentLanglet)
-
3.30.024 Feb 2021Release notes
Open source →Added
Deprecated
- [#1291] Passing another
typevalue to a filter than an integer handled (@VincentLanglet)
Fixed
- [#1314] Unavoidable deprecation about the
codeoption (@VincentLanglet) - [#1247]
ChoiceFilterreturnsnullvalues when used with the typeNOT_EQUAL(@VincentLanglet)
- [#1291] Passing another
-
3.29.008 Feb 2021Release notes
Open source →Deprecated
- [#1292] Extending
ProxyQuery(@VincentLanglet) - [#1292] Extending
DataSource(@VincentLanglet)
Fixed
- [#1287] Fixed
CountFilter(@VincentLanglet)
- [#1292] Extending
-
3.28.026 Jan 2021Release notes
Open source →Added
- [#1280] Added
CountFilter. (@rgrassian)
Changed
- [#1268] Use Doctrine ORM Paginator to count in Pager. (@VincentLanglet)
Deprecated
- [#1268]
Pager::CONCAT_SEPARATOR(@VincentLanglet)
Fixed
- [#1265] Do not provide a default
nullfield_typeoption for Filter (@VincentLanglet) - [#1268] Support of composite key for computeNbResult (@VincentLanglet)
- [#1280] Added
-
3.27.017 Jan 2021Release notes
Open source →Added
- [#1262] Added Pager::getCurrentPageResults() (@VincentLanglet)
- [#1257] Implemented
Sonata\AdminBundle\Datagrid\PagerInterface::countResults()(@dmaicher) - [#1234] Added
Sonata\DoctrineORMAdminBundle\Filter\NullFilter(@pbories) - [#1218] Added
Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQueryInterface(@VincentLanglet) - [#1212] Added
DataSourceInterfaceimplementation (@VincentLanglet)
Changed
- [#1259] Code formatting in views and change from
<a>with empty href to button (@axzx) - [#1255] Changing access checking in views (isGranted to hasAccess) (@axzx)
- [#1241] When using embedded fields or fake field 'foo.bar' (with custom getters in the entity),
FieldDescription::fieldNameis changed frombarto the correct valuefoo.bar(@VincentLanglet)
Deprecated
- [#1262] Deprecated Pager::getResults() (@VincentLanglet)
- [#1257]
Sonata\DoctrineORMAdminBundle\Datagrid\Pager::computeNbResult()(@dmaicher) - [#1257]
Sonata\DoctrineORMAdminBundle\Datagrid\Pager::getNbResults()(@dmaicher) - [#1257]
Sonata\DoctrineORMAdminBundle\Datagrid\Pager::setNbResults()(@dmaicher) - [#1234] Deprecated
Sonata\DoctrineORMAdminBundle\Filter\EmptyFilter(@pbories) - [#1232] Deprecated
ModelManager::getMetadata()method (@VincentLanglet) - [#1232] Deprecated
ModelManager::hasMetadata()method (@VincentLanglet) - [#1211] Deprecate
Sonata\DoctrineORMAdminBundle\Model\ModelManager::modelTransform()with no replacement (@VincentLanglet) - [#1211] Deprecate
Sonata\DoctrineORMAdminBundle\Model\ModelManager::getDefaultPerPageOptions()with no replacement (@VincentLanglet) - [#1211] Deprecate
Sonata\DoctrineORMAdminBundle\Model\ModelManager::getDefaultSortValues()with no replacement (@VincentLanglet) - [#1211] Deprecate
Sonata\DoctrineORMAdminBundle\Model\ModelManager::getDataSourceIterator()with no replacement (@VincentLanglet) - [#1199] Deprecate passing an instance of
ProxyQueryInterfacewhich is not an instance ofSonata\DoctrineORMAdminBundle\Datagrid::ProxyQueryas argument 1 to theSonata\DoctrineORMAdminBundle\Filter\Filter::filter()method (@VincentLanglet)
Fixed
- [#1248] Unavoidable deprecation in Pager (@VincentLanglet)
- [#1254] Fix for checking if delete button is to be displayed (@axzx)
- [#1241] Support for embedded and custom getters by the FieldDescription (@VincentLanglet)
-
3.26.019 Nov 2020Release notes
Open source →Added
- [#1207] Added an option
inversefor theEmptyFilterfilter (@VincentLanglet) - [#1120] Allow empty string for filtering (@peter-gribanov)
- [#1207] Added an option
-
3.25.015 Nov 2020Release notes
Open source →Added
- [#1202] Added "Not equal" filter for
StringFilter(@VincentLanglet) - [#1190] Support for
\DateTimeImmutableatAbstractDateFilter::filter()(@phansys) - [#1166] Check to guarantee that argument 3 passed to
ModelManager::addIdentifiersToQuery()is not an empty array (@phansys)
Deprecated
- [#1170] Instantiate a FieldDescription without passing the name as first argument (@VincentLanglet)
- [#1159] Using a callback filter with a callback option which does not return a boolean (@VincentLanglet)
Fixed
- [#1197]
FormContractor::getDefaultOptions()passescollection_by_referenceoption instead ofby_referencetoAdminTypein order to respect the new API (@VincentLanglet) - [#1189] Setting wrong date and time references at
AbstractDateFilter::filter()(@phansys) - [#1136]
TypeErrorthrown byexplode()when receiving non string values as argument 2 from argument 3 atModelManager::addIdentifiersToQuery()(@phansys)
- [#1202] Added "Not equal" filter for
-
3.24.022 Oct 2020Release notes
Open source →Added
- [#1142]
FormContractor::getDefaultOptions()passby_referencefromCollectionTypetoAdminType(@VincentLanglet) - [#1127] Add more phpdoc (@core23)
- [#1113]
ModelManager::supportsQuery()method (@VincentLanglet) - [#1117] Allow
doctrine/persistence2 (@franmomu)
Deprecated
- [#1113] Calling
executeQuery()on something else than an instance ofDoctrine\ORM\QueryBuilderorSonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery(@VincentLanglet)
Fixed
- [#1142]