Project

General

Profile

Actions

Bug #88515

open

Cannot unset DateTime value via null

Added by Mathias Brodala almost 5 years ago. Updated about 1 year ago.

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

0%

Estimated time:
TYPO3 Version:
9
PHP Version:
Tags:
Complexity:
Is Regression:
No
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:

public function _getProperties(): array
{
    $properties = parent::_getProperties();
    $properties['myDate'] ??= 0;

    return $properties;
}
Actions

Also available in: Atom PDF