Files
cms-core/Documentation/Changelog/9.3/Feature-85160-AutoCreateManagementDBFieldsFromTCACtrl.rst

111 lines
3.8 KiB
ReStructuredText

.. include:: /Includes.rst.txt
.. _feature-85160:
================================================================
Feature: #85160 - Auto create management DB fields from TCA ctrl
================================================================
See :issue:`85160`
Description
===========
The database schema analyzer automatically creates TYPO3 "management" related
database columns by reading a tables :php:`TCA` and checking the :php:`ctrl`
section for table capabilities.
Note this affects only basic columns like :php:`uid`, :php:`deleted` and language
handling related fields like :php:`sys_language_uid`, but **not** a tables main
business fields like a "title" field for a news extension. Those still have to
be defined by extension authors. No column definitions are created from the
:php:`columns` section of a tables :php:`TCA`.
However, :file:`ext_tables.sql` file can be stripped down to business fields.
For example, if a :php:`TCA` definition of a table specifies
:php:`$GLOBALS['TCA']['myTable']['ctrl']['sortby'] = 'sorting'`,
the core will automatically add the column :php:`sorting` with an appropriate
definition.
Field definitions in :file:`ext_tables.sql` take precedence over automatically
generated fields, so the core never overrides a manually specified column definition
from an :file:`ext_tables.sql` file.
These columns below are automatically added if not defined in :file:`ext_tables.sql`
for database tables that provide a :php:`$GLOBALS['TCA']` definition:
:php:`uid` and :php:`PRIMARY KEY`
If removing the uid field from ext_tables.sql, the :php:`PRIMARY KEY` **must** be removed, too.
:php:`pid` and :php:`KEY parent`
Column pid is :php:`unsigned` if the table is not workspace aware, the default
index :php:`parent` includes :php:`pid` and :php:`hidden` as well as :php:`deleted`
if the latter two are specified in :php:`TCA` :php:`ctrl`. The parent index creation
is only applied if column :php:`pid` is auto generated, too.
:php:`['ctrl']['tstamp'] = 'fieldName'`
Often set to :php:`tstamp` or :php:`updatedon`
:php:`['ctrl']['crdate'] = 'fieldName'`
Often set to :php:`crdate` or :php:`createdon`
:php:`['ctrl']['cruser_id'] = 'fieldName'`
Often set to :php:`cruser` or :php:`createdby`
:php:`['ctrl']['delete'] = 'fieldName'`
Often set to :php:`deleted`
:php:`['ctrl']['enablecolumns']['disabled'] = 'fieldName'`
Often set to :php:`hidden` or :php:`disabled`
:php:`['ctrl']['enablecolumns']['starttime'] = 'fieldName'`
Often set to :php:`starttime`
:php:`['ctrl']['enablecolumns']['endtime'] = 'fieldName'`
Often set to :php:`endtime`
:php:`['ctrl']['enablecolumns']['fe_group'] = 'fieldName'`
Often set to :php:`fe_group`
:php:`['ctrl']['sortby'] = 'fieldName'`
Often set to :php:`sorting`
:php:`['ctrl']['descriptionColumn'] = 'fieldName'`
Often set to :php:`description`
:php:`['ctrl']['editlock'] = 'fieldName'`
Often set to :php:`editlock`
:php:`['ctrl']['languageField'] = 'fieldName'`
Often set to :php:`sys_language_uid`
:php:`['ctrl']['transOrigPointerField'] = 'fieldName'`
Often set to :php:`l10n_parent`
:php:`['ctrl']['translationSource'] = 'fieldName'`
Often set to :php:`l10n_source`
:php:`l10n_state`
Column added if :php:`languageField` and :php:`transOrigPointerField` are set
:php:`['ctrl']['origUid'] = 'fieldName'`
Often set to :php:`t3_origuid`
:php:`['ctrl']['transOrigDiffSourceField'] = 'fieldName'`
Often set to :php:`l10n_diffsource`
:php:`['ctrl']['versioningWS'] = true` - :php:`t3ver_*` columns
Columns that make a table workspace aware. All those fields are prefixed with
:php:`t3ver_`, for example :php:`t3ver_oid` and :php:`t3ver_id`. A default
index named :php:`t3ver_oid` to fields :php:`t3ver_oid` and :php:`t3ver_wsid` is
added, too.
Impact
======
Extension developers can skip tons of "general" fields from extensions
:file:`ext_tables.sql` files.
.. index:: Database, TCA