sonata-project/doctrine-orm-admin-bundle
symfony/security-acl dependency is now optional. You need to explicitly require it as a dependency if you are using ACL. ([@dmaicher](https://github.com/dmaicher))sonata-project/exporter v2 ([@dmaicher](https://github.com/dmaicher))sonata-project/form-extensions v1 ([@dmaicher](https://github.com/dmaicher))doctrine/doctrine-bundle 3.0 ([@dmaicher](https://github.com/dmaicher))doctrine/persistence ^4.0 ([@dmaicher](https://github.com/dmaicher))start or end field are not empty. ([@VincentLanglet](https://github.com/VincentLanglet))global_search default value ([@VincentLanglet](https://github.com/VincentLanglet))ModelFilter ([@core23](https://github.com/core23))doctrine/dbal 4 and doctrine/orm 3 ([@dmaicher](https://github.com/dmaicher))start or end field is empty. ([@tonyaxo](https://github.com/tonyaxo))sonata-project/form-extensions 2.0 ([@jordisala1991](https://github.com/jordisala1991))symfony/uid as primary keys using Uuid or Ulid ([@jordisala1991](https://github.com/jordisala1991))ModelFilter for related entities using compound ids ([@jordisala1991](https://github.com/jordisala1991))ModelFilter when filtering for not equals and using an inverse side relation ([@jordisala1991](https://github.com/jordisala1991))sonata-project/form-extensions to ^1.19 ([@jordisala1991](https://github.com/jordisala1991))ModelManager::batchDelete() in order to provide more details about the failed batch operation ([@phansys](https://github.com/phansys))doctrine/common ([@jordisala1991](https://github.com/jordisala1991))doctrine/dbal ^2.0. ([@jordisala1991](https://github.com/jordisala1991))doctrine/persistence ^2.0. ([@jordisala1991](https://github.com/jordisala1991))AuditReader::findRevisionHistory ([@VincentLanglet](https://github.com/VincentLanglet))AbstractDateFilter:: getFormOptions() bug to avoid not rendered advanced filter options in DateFilter or DateTimeFilter. ([@davidromani](https://github.com/davidromani))doctrine/persistence 3 ([@dmaicher](https://github.com/dmaicher))model_class attribute for sonata admin classes in AddAuditEntityCompilerPass. ([@nocive](https://github.com/nocive))CallbackFilter datagrid filter. ([@toooni](https://github.com/toooni))field_options are automatically passed to the Filter when an EntityType or a ModelAutocompleteType is used. ([@VincentLanglet](https://github.com/VincentLanglet))ModelAutocompleteFilter in favor of ModelFilter with a field_type ModelAutocompleteType ([@VincentLanglet](https://github.com/VincentLanglet))ModelManager::getEntityManager() ([@VincentLanglet](https://github.com/VincentLanglet))AuditReader compatibility with sonata-admin@4.0.0-rc.2 ([@VincentLanglet](https://github.com/VincentLanglet))EmptyFilter ([@VincentLanglet](https://github.com/VincentLanglet))Pager::getCurrentPageResults() does not return Paginator anymore. ([@VincentLanglet](https://github.com/VincentLanglet))FilterData instead of array in filters. ([@VincentLanglet](https://github.com/VincentLanglet))See Changelog
FieldDescription in FieldDescriptionFactory ([@VincentLanglet](https://github.com/VincentLanglet))StringFilter with null valuesSonata\DoctrineORMAdminBundle\Datagrid\Pager::computeNbResult() now returns an integer, not a stringTypeError with explode in ModelManager
sonata-project/exporter 2__toString() will be used if provided. (This also fixes the issue where the
id fails to display when the binary / byte datatype is used as primary key,
e.g., UUIDBinaryType (aka: InnoDB Optimised Binary UUIDs))StringFilter case-insensitiveTwig_Error_Runtime "Key "associationAdmin" for array with keys
translationDomain, associationadmin, options" does not exist."sonata.admin.manipulator.acl.object.orm is now publicsonata_type_model_list_widget in template Form/form_admin_fields.html.twig now determines the object identifier correctly when building a link to the associated adminsonata.admin.manager.orm as public serviceProxyQuery::setDistinct and ProxyQuery::isDistinct.Pager use CountWalker for get count.TypeGuesser::guessType() and FilterTypeGuesser::guessType().base_show_field.html.twig.setSortOrder input is now validatedglobal_search option to the StringFilter ([@VincentLanglet](https://github.com/VincentLanglet))treat_null_as option to BooleanFilter ([@VincentLanglet](https://github.com/VincentLanglet))GroupableConditionAwareInterface ([@VincentLanglet](https://github.com/VincentLanglet))Filter objects ([@VincentLanglet](https://github.com/VincentLanglet))Filter::$groupedOrExpressions ([@VincentLanglet](https://github.com/VincentLanglet))ChoiceTypeFilter for global search ([@VincentLanglet](https://github.com/VincentLanglet))Filter::$groupedOrExpressions static property (see sonata-project/SonataAdminBundle#7096) ([@VincentLanglet](https://github.com/VincentLanglet))configureQuery() method ([@VincentLanglet](https://github.com/VincentLanglet))Filter::applyWhere() with PostgreSQL. ([@phansys](https://github.com/phansys))ProxyQuery::execute() is now returning a Paginator instead of an array. ([@VincentLanglet](https://github.com/VincentLanglet))templates.form and templates.filter config ([@VincentLanglet](https://github.com/VincentLanglet))FilterData as type declaration of argument 4 in the callable passed to CallbackFilter ([@franmomu](https://github.com/franmomu))SonataDoctrineORMAdmin form and filter templates. ([@VincentLanglet](https://github.com/VincentLanglet))sonata_admin configuration. ([@VincentLanglet](https://github.com/VincentLanglet))StringFilter in order to force the database to ignore the case sensitivity when matching filters. ([@phansys](https://github.com/phansys))true to null in StringFilter. ([@phansys](https://github.com/phansys))StringFilter. ([@phansys](https://github.com/phansys))ModelManager::getModelIdentifier(). ([@phansys](https://github.com/phansys))ModelManager::getDefaultSortValues() method ([@franmomu](https://github.com/franmomu))ModelManager::reverseTransform() ([@VincentLanglet](https://github.com/VincentLanglet))FieldDescriptionFactory class ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Filter\EmptyFilter service since its class is already deprecated since version 3.27 ([@dmaicher](https://github.com/dmaicher))ModelManager::modelReverseTransform() ([@VincentLanglet](https://github.com/VincentLanglet))AbstractTypeGuesser class ([@VincentLanglet](https://github.com/VincentLanglet))FilterTypeGuesser::guessType() ([@VincentLanglet](https://github.com/VincentLanglet))TypeGuesser::guessType() ([@VincentLanglet](https://github.com/VincentLanglet))ModelManager:: getParentMetadataForProperty() ([@VincentLanglet](https://github.com/VincentLanglet))ModelManager:: getNewFieldDescriptionInstance() ([@VincentLanglet](https://github.com/VincentLanglet))ModelManager:: getModelInstance() ([@VincentLanglet](https://github.com/VincentLanglet))FieldDescriptionInterface methods ([@franmomu](https://github.com/franmomu))WHERE clause from Filter::applyWhere() when using OR conditions on queries that already have previous conditions ([@phansys](https://github.com/phansys))trigger_error() ([@phansys](https://github.com/phansys))Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQueryInterface::getDoctrineQuery() ([@VincentLanglet](https://github.com/VincentLanglet))ProxyQuery::execute() method ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQueryInterface as argument 2 of ModelManager::addIdentifiersToQuery() ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQueryInterface as argument 2 of ModelManager::batchDelete() ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Datagrid\OrderByToSelectWalker ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::getFixedQueryBuilder() ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery::getSingleScalarResult() ([@VincentLanglet](https://github.com/VincentLanglet))ManagerRegistry as first argument of ObjectAclManipulator ([@VincentLanglet](https://github.com/VincentLanglet))type value to a filter than an integer handled ([@VincentLanglet](https://github.com/VincentLanglet))code option ([@VincentLanglet](https://github.com/VincentLanglet))ChoiceFilter returns null values when used with the type NOT_EQUAL ([@VincentLanglet](https://github.com/VincentLanglet))add a new Model even if one is already selected::class constantsDoctrine\ORM\Mapping\ClassMetadataInfoProxyQuery ([@VincentLanglet](https://github.com/VincentLanglet))DataSource ([@VincentLanglet](https://github.com/VincentLanglet))CountFilter ([@VincentLanglet](https://github.com/VincentLanglet))CountFilter. ([@rgrassian](https://github.com/rgrassian))Pager::CONCAT_SEPARATOR ([@VincentLanglet](https://github.com/VincentLanglet))null field_type option for Filter ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\AdminBundle\Datagrid\PagerInterface::countResults() ([@dmaicher](https://github.com/dmaicher))Sonata\DoctrineORMAdminBundle\Filter\NullFilter ([@pbories](https://github.com/pbories))Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQueryInterface ([@VincentLanglet](https://github.com/VincentLanglet))DataSourceInterface implementation ([@VincentLanglet](https://github.com/VincentLanglet))<a> with empty href to button ([@axzx](https://github.com/axzx))FieldDescription::fieldName is changed from bar to the correct value foo.bar ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Datagrid\Pager::computeNbResult() ([@dmaicher](https://github.com/dmaicher))Sonata\DoctrineORMAdminBundle\Datagrid\Pager::getNbResults() ([@dmaicher](https://github.com/dmaicher))Sonata\DoctrineORMAdminBundle\Datagrid\Pager::setNbResults() ([@dmaicher](https://github.com/dmaicher))Sonata\DoctrineORMAdminBundle\Filter\EmptyFilter ([@pbories](https://github.com/pbories))ModelManager::getMetadata() method ([@VincentLanglet](https://github.com/VincentLanglet))ModelManager::hasMetadata() method ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Model\ModelManager::modelTransform() with no replacement ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Model\ModelManager::getDefaultPerPageOptions() with no replacement ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Model\ModelManager::getDefaultSortValues() with no replacement ([@VincentLanglet](https://github.com/VincentLanglet))Sonata\DoctrineORMAdminBundle\Model\ModelManager::getDataSourceIterator() with no replacement ([@VincentLanglet](https://github.com/VincentLanglet))ProxyQueryInterface which is not an instance of Sonata\DoctrineORMAdminBundle\Datagrid::ProxyQuery as argument 1 to the Sonata\DoctrineORMAdminBundle\Filter\Filter::filter() method ([@VincentLanglet](https://github.com/VincentLanglet))inverse for the EmptyFilter filter ([@VincentLanglet](https://github.com/VincentLanglet))StringFilter ([@VincentLanglet](https://github.com/VincentLanglet))\DateTimeImmutable at AbstractDateFilter::filter() ([@phansys](https://github.com/phansys))ModelManager::addIdentifiersToQuery() is not an empty array ([@phansys](https://github.com/phansys))FormContractor::getDefaultOptions() passes collection_by_reference option instead of by_reference to AdminType in order to respect the new API ([@VincentLanglet](https://github.com/VincentLanglet))AbstractDateFilter::filter() ([@phansys](https://github.com/phansys))TypeError thrown by explode() when receiving non string values as argument 2 from argument 3 at ModelManager::addIdentifiersToQuery() ([@phansys](https://github.com/phansys))FormContractor::getDefaultOptions() pass by_reference from CollectionType to AdminType ([@VincentLanglet](https://github.com/VincentLanglet))ModelManager::supportsQuery() method ([@VincentLanglet](https://github.com/VincentLanglet))doctrine/persistence 2 ([@franmomu](https://github.com/franmomu))executeQuery() on something else than an instance of Doctrine\ORM\QueryBuilder or Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery ([@VincentLanglet](https://github.com/VincentLanglet))ObjectAclManipulator ([@core23](https://github.com/core23))deprecated tag instead of sonata_template_deprecate to not throw unwanted deprecation notices ([@franmomu](https://github.com/franmomu))ModelManager::camelize ([@VincentLanglet](https://github.com/VincentLanglet))format option of the StringFilter. ([@VincentLanglet](https://github.com/VincentLanglet))StringFilter support for START_WITH and END_WITH operator
([@napestershine](https://github.com/napestershine))FieldDescription::getTargetModel().
([@phansys](https://github.com/phansys))null as argument 2 for ModelManager::find(); ([@phansys](https://github.com/phansys))null as argument 1 for ModelManager::getNormalizedIdentifier(); ([@phansys](https://github.com/phansys))ModelManager::getNormalizedIdentifier(); ([@phansys](https://github.com/phansys))object as argument 1 for ModelManager::getUrlSafeIdentifier(); ([@phansys](https://github.com/phansys))FieldDescription::getTargetEntity() in favor of FieldDescription::getTargetModel(). ([@phansys](https://github.com/phansys))ProxyQuery::setHint which allow to pass Query hint in createQuerypreg_replacedecimal and float type use the float template if no number template
exists ([@VincentLanglet](https://github.com/VincentLanglet))one_to_one, one_to_many, many_to_one and many_to_many type are
correctly using the template defined in your config instead of the Sonata one.
([@VincentLanglet](https://github.com/VincentLanglet))ModelManager::getDefaultPerPageOptionsArrayFilter which supports [@ORM](https://github.com/ORM)\Column(type="array")for..if.case_sensitive option into account
when the operator is =.Typo in AbstractDateFilter, DateRangeOperatorType::TYPE_EQUAL should have been
DateOperatorType::TYPE_EQUAL.
ModelManager::getNormalizedIdentifier().getModelIdentifier from ModelManager[@method](https://github.com/method) annotation for ProxyQueryvoid in ModelManager::getNormalizedIdentifier(), which is
intended to return a value or null.FormType constantsDatagridsimple_array fields._sort_by filter to not be initially defined.sonata.admin.manager tag to sonata.admin.manager.orm service._sort_by_ datagrid value is properly applied before any custom orderBy.computeNbResult where groupBy was useddoctrine/persistencetoString() methods.Builder/DatagridBuilder::getBaseDatagrid()toString and __toString when calling
getValueFromType on value-object such as Uuidoperator_type and operator_options are overridable for the provided Filters
Pager->computeNbResult has no resultCreate const for operator choices in Filter classes
sonata_type_model_list_widget if there is no valuesonata-ba-field-error class to table fields with errorsgetEntityManager with getManagerModelManager::getDataSourceIterator when getSortBy is emptyactions type will get all the required field options just like the _action field._action field will get a proper actions type.ModelFilter::handleMultiple fix method to retrieve parent alias for building IDENTITY query partAddAuditEntityCompilerPass::process() when definition simplethings.entityaudit.audited_entities is not present, as of 2.x version for simplethings/entity-audit-bundle.edit_orm_one_to_many_inline_table.html.twigDatagridMapper::addIdentifier on mapped fieldhasAccessFormContractorUnitOfWork::getEntityState() method to detect persisted entities.RuntimeException usagesFormContractor::getDefaultOptions checks which type is used. Instead of checking for an array of available types, we improve this by checking for the class instance or parents.admin_code option for sonata_type_model_listFormContractor supports the new Sonata\AdminBundle\Form\Type\ModelListTypeForm Type to be compatible with Symfony 2.8+FormContractor::getDefaultOptions not checking against form types FQCNssonata_type_model_list popupform type nameHow can I help you explore Laravel packages today?