[BUGFIX] Allow persisting nullable properties in extbase
Extbase persistence does not treat nullable properties like DataHandler does. A nullable domain model property, which either implements `DomainObjectInterface` or is of type `DateTime`, can not be set to null again, when the object is already persisted with a value not equal to null. DataHandler respects this scenario by using the value of the `default` config TCA key for affected relation fields or by typecasting an empty value to integer for `datetime` fields. For `datetime` fields, additionally the `dbType` is evaluated and an empty value is transformed to the corresponding dbType empty value. This change covers both scenarios in extbase persistence, so it is possible to set properties to `null`, if the property either implements `DomainObjectInterface` or is of type `DateTime`. Resolves: #103641 Related: #88515 Releases: main Change-Id: I17767b34ac75bb7387a6fc3c6e7345a7d3d25d86 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83839 Tested-by:Simon Schaufelberger <simonschaufi+typo3@gmail.com> Tested-by:
Oliver Klee <typo3-coding@oliverklee.de> Tested-by:
core-ci <typo3@b13.com> Reviewed-by:
Simon Schaufelberger <simonschaufi+typo3@gmail.com> Tested-by:
Benni Mack <benni@typo3.org> Reviewed-by:
Benni Mack <benni@typo3.org>
Showing
- typo3/sysext/extbase/Classes/Persistence/Generic/Backend.php 42 additions, 11 deletionstypo3/sysext/extbase/Classes/Persistence/Generic/Backend.php
- typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Classes/Domain/Model/Post.php 15 additions, 3 deletions...res/Extensions/blog_example/Classes/Domain/Model/Post.php
- typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Configuration/TCA/tx_blogexample_domain_model_post.php 9 additions, 1 deletion...le/Configuration/TCA/tx_blogexample_domain_model_post.php
- typo3/sysext/extbase/Tests/Functional/Fixtures/Extensions/blog_example/Resources/Private/Language/locallang_db.xlf 3 additions, 0 deletions.../blog_example/Resources/Private/Language/locallang_db.xlf
- typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/TestResultNullableDateTimeProperty.csv 3 additions, 0 deletions...rsistence/Fixtures/TestResultNullableDateTimeProperty.csv
- typo3/sysext/extbase/Tests/Functional/Persistence/Fixtures/TestResultNullableDomainModelRelation.csv 3 additions, 0 deletions...stence/Fixtures/TestResultNullableDomainModelRelation.csv
- typo3/sysext/extbase/Tests/Functional/Persistence/Generic/Mapper/DataMapperTest.php 4 additions, 0 deletions.../Functional/Persistence/Generic/Mapper/DataMapperTest.php
- typo3/sysext/extbase/Tests/Functional/Persistence/UpdateTest.php 93 additions, 0 deletions...ysext/extbase/Tests/Functional/Persistence/UpdateTest.php
Please register or sign in to comment