Breaking: #97358 - Removed eval=int from TCA type "datetime"

See forge#97358

Description

With forge#97232 the new TCA type datetime has been introduced. To further improve the usage of the new dedicated TCA type and to further reduce complexity in the configuration, the eval=int option has now been removed as well. All TCA type datetime fields, which do not use a native database type (dbType) are now always handled with int.

It is therefore recommended to represent them by an integer database field. To allow negative timestamps - used for dates before 1970 - the integer database fields are required to be defined as signed. This means, the unsigned definition must be omitted.

Note

TYPO3 automatically creates database fields for all TCA type datetime columns, if those are not already manually defined in the corresponding extension's ext_tables.sql file.

Impact

All TCA datetime fields are now always handled with int, as long as no native database type is used.

TCA type datetime was the last TCA type using eval=int. Therefore, the int option is no longer evaluated by neither FormEngine nor DataHandler. This means, custom FormEngine elements, which do currently rely on this option being evaluated in any way, have to implement the necessary functionality by themselves now.

Affected Installations

All installations which use TCA type datetime columns without a native database type (dbType). Also installations, using a non int default value in TCA.

All installations, relying on evaluation of the eval=int option for their custom FormEngine elements.

Migration

Remove eval=int from any TCA column of type datetime.

Migrate necessary functionality, related to TCA option eval=int, to your custom extension code, since FormEngine does no longer evaluate this option.

Migrate default values for TCA type datetime fields to int (e.g. '' to 0).

Migrate corresponding database fields to integer where applicable.

# Before
CREATE TABLE tx_ext_my_table (
    datetime text
);

# After
CREATE TABLE tx_ext_my_table (
    datetime int(11) DEFAULT '0' NOT NULL,
);

Note

In case the corresponding TCA field defines eval=null, the NOT NULL definition must be omitted.

Note

In case you don't need any manual configuration (e.g. a special default value), you can omit the definition of the database field, since TYPO3 automatically creates those fields for TCA type datetime columns.