Bug #88515

Cannot unset DateTime value via null

Added by Mathias Brodala 3 months ago.

Status:
New
Priority:
Must have
Assignee:
-
Category:
Extbase
Target version:
-
Start date:
2019-06-07
Due date:
% Done:

0%

TYPO3 Version:
9
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

Given an Extbase domain model with a DateTime property and a DB field declared as usual:

my_date int(11) unsigned DEFAULT '0' NOT NULL

Setting a value here from a Fluid form works fine and the date is stored as timestamp in the DB.

However, when trying to clear this property, an SqlException occurs:

(1/1) #1470230767 TYPO3\CMS\Extbase\Persistence\Generic\Storage\Exception\SqlErrorException
Column 'my_date' cannot be null

in /.../typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php line 197

The error occurs when Backend::persistObject() calls DataMapper::getPlainValue() with the current null value for the DateTime property and thus gets a string "NULL" in return. This then fails because null values are not allowed here in SQL.

An override of AbstractDomainObject::_getProperties() with a fallback to 0 (zero) for date properties works around the issue, however this should be fixed in Extbase itself.

Also available in: Atom PDF