Common fields 

Mandatory fields 

If a table has a TCA definition, TYPO3 will automatically create the following fields:

uid
An auto-incrementing unique identifier. This field is the table key and is used as a reference in relationships between records.
pid
The uid field of the parent page. A record is situated on its parent page. If this value is 0 the record is not connected to a page.

These fields are not defined anywhere else in the TCA configuration. It is not possible to use other names for these fields.

Fields used by convention 

Soft delete 

deleted

This field enables soft delete in records. Configure it by setting ctrl->delete:

EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php
<?php

return [
    'ctrl' => [
        'delete' => 'deleted',
        // ...
    ],
];
Copied!

The deleted field is not visible in backend forms. It is handled separately by the DataHandler and therefore does not need to be defined in the columns section.

Enablecolumns 

Changed in version 13.3

hidden

This field enables soft hiding of records. Configure it by setting ctrl->enablecolumns->disabled:

EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php
<?php

return [
    'ctrl' => [
        'enablecolumns' => [
            'disabled' => 'hidden',
        ],
        // ...
    ],
    'palettes' => [
        'visibility' => [
            'showitem' => 'hidden',
        ],
    ],
    'types' => [
        0 => [
            'showitem' => '
                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
                    [...],
                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
                    --palette--;;visibility,
            ',
        ],
    ],
];
Copied!
starttime and endtime

These fields can enable records at a starttime and disable them at an endtime. Configure them by setting ctrl->enablecolumns->starttime or endtime:

EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php
<?php

return [
    'ctrl' => [
        'enablecolumns' => [
            'disabled' => 'hidden',
            'starttime' => 'starttime',
            'endtime' => 'endtime',
        ],
        // ...
    ],
    'palettes' => [
        'access' => [
            'showitem' => 'starttime, endtime',
        ],
        'visibility' => [
            'showitem' => 'hidden',
        ],
    ],
    'types' => [
        0 => [
            'showitem' => '
                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
                    [...],
                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
                    --palette--;;visibility,
                    --palette--;;access,
            ',
        ],
    ],
];
Copied!
fe_group

This field defines which field is used for access control. Configure it by setting ctrl->enablecolumns->fe_group:

EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php
<?php

return [
    'ctrl' => [
        'enablecolumns' => [
            'fe_group' => 'fe_group',
        ],
        // ...
    ],
    'palettes' => [
        'access' => [
            'label' => 'LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access',
            'showitem' => '
                fe_group,
            ',
        ],
    ],
    'types' => [
        0 => [
            'showitem' => '
                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
                    [...],
                --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
                    --palette--;;access,
            ',
        ],
    ],
];
Copied!

Manual sorting in the backend 

sorting

This field is used to sort records in the backend. Configure it by setting ctrl->sortby:

EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php
<?php

return [
    'ctrl' => [
        'sortby' => 'sorting',
    ],
];
Copied!

Fields managed by the DataHandler 

The following fields are automatically set when a record is written by the DataHandler. They should never be displayed in backend forms or explicitly set. They do not need to be defined in the Field definitions (columns) section of the TCA.

EXT:my_extension/Configuration/TCA/tx_myextension_domain_model_something.php
<?php

return [
    'ctrl' => [
        'tstamp' => 'tstamp',
        'crdate' => 'crdate',
        'origUid' => 't3_origuid',
        // ...
    ],
];
Copied!
tstamp

This field is automatically updated to the current timestamp when the record is updated or saved in the DataHandler.

It can be configured by setting ctrl->tstamp.

crdate

This field is automatically set to the current timestamp if the record is created by the DataHandler.

It can be configured by setting ctrl->crdate.

t3_origuid

Field name containing the uid of the original record if a record is created as a copy or new version of another record.

It can be configured by setting ctrl->origUid.