‪TYPO3CMS  ‪main
TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema Class Reference

Public Member Functions

array< non-empty-string, enrich(array $tables):array { $tableNamesFromTca=array_keys( $GLOBALS[ 'TCA']);$existingTableNames=array_keys( $tables);foreach( $tableNamesFromTca as $tableName) { if(!in_array( $tableName, $existingTableNames, true)) { throw new \RuntimeException('Table name ' . $tableName . ' does not exist in incoming table list', 1696424993);} } $tables=$this-> enrichSingleTableFieldsFromTcaCtrl ($tables)
 

Public Attributes

 $tables = $this->enrichSingleTableFieldsFromTcaColumns($tables)
 
 $pidColumnAdded = false
 
if(! $this->isColumnDefinedForTable($tables, $tableName, 'pid')) if(!empty($tableDefinition['ctrl']['tstamp']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['tstamp'])) if(!empty($tableDefinition['ctrl']['crdate']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['crdate'])) if(!empty($tableDefinition['ctrl']['delete']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['delete'])) if(!empty($tableDefinition['ctrl']['enablecolumns']['disabled']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['enablecolumns']['disabled'])) if(!empty($tableDefinition['ctrl']['enablecolumns']['starttime']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['enablecolumns']['starttime'])) if(!empty($tableDefinition['ctrl']['enablecolumns']['endtime']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['enablecolumns']['endtime'])) if(!empty($tableDefinition['ctrl']['enablecolumns']['fe_group']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['enablecolumns']['fe_group'])) if(!empty($tableDefinition['ctrl']['sortby']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['sortby'])) if($pidColumnAdded &&! $this->isIndexDefinedForTable($tables, $tableName, 'parent')) if(!empty($tableDefinition['ctrl']['descriptionColumn']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['descriptionColumn'])) if(!empty($tableDefinition['ctrl']['editlock']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['editlock'])) if(!empty($tableDefinition['ctrl']['languageField']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['languageField'])) if(!empty($tableDefinition['ctrl']['languageField']) &&!empty($tableDefinition['ctrl']['transOrigPointerField']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['transOrigPointerField'])) if(!empty($tableDefinition['ctrl']['languageField']) &&!empty($tableDefinition['ctrl']['translationSource']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['translationSource'])) if(!empty($tableDefinition['ctrl']['languageField']) &&!empty($tableDefinition['ctrl']['transOrigPointerField']) &&! $this->isColumnDefinedForTable($tables, $tableName, 'l10n_state')) if(!empty($tableDefinition['ctrl']['origUid']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['origUid'])) if(!empty($tableDefinition['ctrl']['transOrigDiffSourceField']) &&! $this->isColumnDefinedForTable($tables, $tableName, $tableDefinition['ctrl']['transOrigDiffSourceField'])) if(!empty($tableDefinition['ctrl']['versioningWS']) &&(bool) $tableDefinition['ctrl']['versioningWS']===true &&! $this->isColumnDefinedForTable($tables, $tableName, 't3ver_oid')) if(!empty($tableDefinition['ctrl']['versioningWS']) &&(bool) $tableDefinition['ctrl']['versioningWS']===true &&! $this->isColumnDefinedForTable($tables, $tableName, 't3ver_wsid')) if(!empty($tableDefinition['ctrl']['versioningWS']) &&(bool) $tableDefinition['ctrl']['versioningWS']===true &&! $this->isColumnDefinedForTable($tables, $tableName, 't3ver_state')) if(!empty($tableDefinition['ctrl']['versioningWS']) &&(bool) $tableDefinition['ctrl']['versioningWS']===true &&! $this->isColumnDefinedForTable($tables, $tableName, 't3ver_stage')) if(!empty($tableDefinition['ctrl']['versioningWS']) &&(bool) $tableDefinition['ctrl']['versioningWS']===true &&! $this->isIndexDefinedForTable($tables, $tableName, 't3ver_oid')) return $tables
 
 else
 
foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) $tableConnectionPlatform = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($tableName)->getDatabasePlatform()
 
foreach($tableDefinition['columns'] as $fieldName=> $fieldConfig) return $tables
 
if(! $this->isColumnDefinedForTable($tables, $mmTableName, 'uid_local')) if(! $this->isIndexDefinedForTable($tables, $mmTableName, 'uid_local')) if(! $this->isColumnDefinedForTable($tables, $mmTableName, 'uid_foreign')) if(! $this->isIndexDefinedForTable($tables, $mmTableName, 'uid_foreign')) if(! $this->isColumnDefinedForTable($tables, $mmTableName, 'sorting')) if(! $this->isColumnDefinedForTable($tables, $mmTableName, 'sorting_foreign')) if(!empty($tcaColumn['config']['MM_oppositeUsage'])) if(! $needsUid && $tables[$mmTableName]->getPrimaryKey()===null &&!empty($tcaColumn['config']['MM_oppositeUsage'])) elseif(! $needsUid && $tables[$mmTableName]->getPrimaryKey()===null) return $tables
 

Protected Member Functions

array< non-empty-string, enrichSingleTableFieldsFromTcaCtrl(array $tables):array { foreach( $GLOBALS[ 'TCA'] as $tableName=> $tableDefinition) { if(! $this->isColumnDefinedForTable( $tables, $tableName, 'uid')) { $tables[ $tableName]-> addColumn ( $this->quote('uid'), Types::INTEGER, [ 'notnull'=> true, 'unsigned'=> true, 'autoincrement'=> true,])
 
array< non-empty-string, enrichSingleTableFieldsFromTcaColumns(array $tables):array { foreach( $GLOBALS[ 'TCA'] as $tableName=> $tableDefinition) { if(!isset( $tableDefinition[ 'columns'])||!is_array( $tableDefinition[ 'columns'])) { continue;} foreach( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) { if((string)( $fieldConfig[ 'config'][ 'type'] ?? '') !=='category'||$this->isColumnDefinedForTable( $tables, $tableName, $fieldName)) { continue;} if(( $fieldConfig[ 'config'][ 'relationship'] ?? '')==='oneToMany') { $tables[ $tableName]-> addColumn ( $this->quote($fieldName), Types::TEXT, [ 'notnull'=> false,])
 
array< non-empty-string, enrichMmTables( $tables):array { foreach( $GLOBALS[ 'TCA'] as $tableName=> $tableDefinition) { if(!is_array( $tableDefinition[ 'columns'] ?? false)) { continue;} foreach( $tableDefinition[ 'columns'] as $tcaColumn) { if(!is_array( $tcaColumn[ 'config'] ?? false)||!is_string( $tcaColumn[ 'config'][ 'type'] ?? false)||!in_array( $tcaColumn[ 'config'][ 'type'],[ 'select', 'group', 'inline', 'category'], true)||!is_string( $tcaColumn[ 'config'][ 'MM'] ?? false)||( $tcaColumn[ 'config'][ 'MM_opposite_field'] ?? false)) { continue;} $mmTableName=$tcaColumn[ 'config'][ 'MM'];if(!array_key_exists( $mmTableName, $tables)) { $tables[ $mmTableName]=GeneralUtility::makeInstance(Table::class, $mmTableName);} $needsUid=(bool)( $tcaColumn[ 'config'][ 'multiple'] ?? false);if( $needsUid &&! $this->isColumnDefinedForTable( $tables, $mmTableName, 'uid')) { $tables[ $mmTableName]-> addColumn ( $this->quote('uid'), Types::INTEGER, [ 'notnull'=> true, 'unsigned'=> true, 'autoincrement'=> true,])
 
 isColumnDefinedForTable (array $tables, string $tableName, string $fieldName)
 
 isIndexDefinedForTable (array $tables, string $tableName, string $indexName)
 
 quote (string $identifier)
 

Detailed Description

This class is called by the SchemaMigrator after all extension's ext_tables.sql files have been parsed and processed to the doctrine Table/Column/Index objects.

Method enrich() goes through all $GLOBALS['TCA'] tables and adds fields like 'uid', 'sorting', 'deleted' and friends if the feature is enabled in TCA and the field has not been defined in ext_tables.sql files.

This allows extension developers to leave out the TYPO3 DB management fields and reduce ext_tables.sql of extensions down to the business fields.

Definition at line 42 of file DefaultTcaSchema.php.

Member Function Documentation

◆ addColumn() [1/3]

array<non-empty-string, enrichSingleTableFieldsFromTcaColumns(array $tables): array { foreach ($GLOBALS['TCA'] as $tableName => $tableDefinition) { if (!isset($tableDefinition['columns']) || !is_array($tableDefinition['columns'])) { continue; } foreach ($tableDefinition['columns'] as $fieldName => $fieldConfig) { if ((string)($fieldConfig['config']['type'] ?? '') !== 'category' || $this->isColumnDefinedForTable($tables, $tableName, $fieldName) ) { continue; } if (($fieldConfig['config']['relationship'] ?? '') === 'oneToMany') { $tables[$tableName]-> TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::addColumn ( $this->  quote $fieldName,
Types::TEXT   
)
protected

Add single fields based on tables TCA 'columns'.

Parameters
array<non-empty-string,Table>‪$tables
Returns
‪array<non-empty-string, Table>

◆ addColumn() [2/3]

array<non-empty-string, enrichSingleTableFieldsFromTcaCtrl(array $tables): array { foreach ($GLOBALS['TCA'] as $tableName => $tableDefinition) { if (!$this->isColumnDefinedForTable($tables, $tableName, 'uid')) { $tables[$tableName]-> TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::addColumn ( $this->  quote 'uid',
Types::INTEGER   
)
protected

Add single fields like uid, sorting and similar, based on tables TCA 'ctrl' settings.

Parameters
array<non-empty-string,Table>‪$tables
Returns
‪array<non-empty-string, Table>

◆ addColumn() [3/3]

array<non-empty-string, enrichMmTables($tables): array { foreach ($GLOBALS['TCA'] as $tableName => $tableDefinition) { if (!is_array($tableDefinition['columns'] ?? false)) { continue; } foreach ($tableDefinition['columns'] as $tcaColumn) { if ( !is_array($tcaColumn['config'] ?? false) || !is_string($tcaColumn['config']['type'] ?? false) || !in_array($tcaColumn['config']['type'], ['select', 'group', 'inline', 'category'], true) || !is_string($tcaColumn['config']['MM'] ?? false) || ($tcaColumn['config']['MM_opposite_field'] ?? false) ) { continue; } $mmTableName = $tcaColumn['config']['MM']; if (!array_key_exists($mmTableName, $tables)) { $tables[$mmTableName] = GeneralUtility::makeInstance( Table::class, $mmTableName ); } $needsUid = (bool)($tcaColumn['config']['multiple'] ?? false); if ($needsUid && !$this->isColumnDefinedForTable($tables, $mmTableName, 'uid')) { $tables[$mmTableName]-> TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::addColumn ( $this->  quote 'uid',
Types::INTEGER   
)
protected

Find table fields that configure a "true" MM relation and define the according mm table schema for them. True MM tables are intermediate tables that have NO TCA itself. Those are indicated by type=select and type=group and type=inline fields with MM property.

Parameters
array<non-empty-string,Table>‪$tables
Returns
‪array<non-empty-string, Table>

◆ enrichSingleTableFieldsFromTcaCtrl()

array<non-empty-string, enrich(array $tables): array { $tableNamesFromTca = array_keys($GLOBALS['TCA']); $existingTableNames = array_keys($tables); foreach ($tableNamesFromTca as $tableName) { if (!in_array($tableName, $existingTableNames, true)) { throw new \RuntimeException( 'Table name ' . $tableName . ' does not exist in incoming table list', 1696424993 ); } } $tables = $this-> TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::enrichSingleTableFieldsFromTcaCtrl (   $tables)

Add fields to $tables array that has been created from ext_tables.sql files. This goes through all tables defined in TCA, looks for 'ctrl' features like "soft delete" ['ctrl']['delete'] and adds the field if it has not been defined in ext_tables.sql, yet.

Parameters
array<non-empty-string,Table>‪$tables
Returns
‪array<non-empty-string, Table> Modified tables

◆ isColumnDefinedForTable()

TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::isColumnDefinedForTable ( array  $tables,
string  $tableName,
string  $fieldName 
)
protected

True if a column with a given name is defined within the incoming array of Table's.

Parameters
array<non-empty-string,Table>‪$tables

Definition at line 1314 of file DefaultTcaSchema.php.

References TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema\$tables.

◆ isIndexDefinedForTable()

TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::isIndexDefinedForTable ( array  $tables,
string  $tableName,
string  $indexName 
)
protected

True if an index with a given name is defined within the incoming array of Table's.

Parameters
array<non-empty-string,Table>‪$tables

Definition at line 1325 of file DefaultTcaSchema.php.

References TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema\$tables.

◆ quote()

TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::quote ( string  $identifier)
protected

Definition at line 1330 of file DefaultTcaSchema.php.

References TYPO3\CMS\Webhooks\Message\$identifier.

Member Data Documentation

◆ $pidColumnAdded

TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::$pidColumnAdded = false

Definition at line 98 of file DefaultTcaSchema.php.

◆ $tableConnectionPlatform

foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::$tableConnectionPlatform = GeneralUtility::makeInstance(ConnectionPool::class)->getConnectionForTable($tableName)->getDatabasePlatform()

Definition at line 975 of file DefaultTcaSchema.php.

◆ $tables [1/4]

TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::$tables = $this->enrichSingleTableFieldsFromTcaColumns($tables)

◆ $tables [2/4]

if (! $this->isColumnDefinedForTable( $tables, $tableName, 'pid')) if (!empty( $tableDefinition[ 'ctrl'][ 'tstamp']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'tstamp'])) if (!empty( $tableDefinition[ 'ctrl'][ 'crdate']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'crdate'])) if (!empty( $tableDefinition[ 'ctrl'][ 'delete']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'delete'])) if (!empty( $tableDefinition[ 'ctrl'][ 'enablecolumns'][ 'disabled']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'enablecolumns'][ 'disabled'])) if (!empty( $tableDefinition[ 'ctrl'][ 'enablecolumns'][ 'starttime']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'enablecolumns'][ 'starttime'])) if (!empty( $tableDefinition[ 'ctrl'][ 'enablecolumns'][ 'endtime']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'enablecolumns'][ 'endtime'])) if (!empty( $tableDefinition[ 'ctrl'][ 'enablecolumns'][ 'fe_group']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'enablecolumns'][ 'fe_group'])) if (!empty( $tableDefinition[ 'ctrl'][ 'sortby']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'sortby'])) if ( $pidColumnAdded &&! $this->isIndexDefinedForTable( $tables, $tableName, 'parent')) if (!empty( $tableDefinition[ 'ctrl'][ 'descriptionColumn']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'descriptionColumn'])) if (!empty( $tableDefinition[ 'ctrl'][ 'editlock']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'editlock'])) if (!empty( $tableDefinition[ 'ctrl'][ 'languageField']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'languageField'])) if (!empty( $tableDefinition[ 'ctrl'][ 'languageField']) &&!empty( $tableDefinition[ 'ctrl'][ 'transOrigPointerField']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'transOrigPointerField'])) if (!empty( $tableDefinition[ 'ctrl'][ 'languageField']) &&!empty( $tableDefinition[ 'ctrl'][ 'translationSource']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'translationSource'])) if (!empty( $tableDefinition[ 'ctrl'][ 'languageField']) &&!empty( $tableDefinition[ 'ctrl'][ 'transOrigPointerField']) &&! $this->isColumnDefinedForTable( $tables, $tableName, 'l10n_state')) if (!empty( $tableDefinition[ 'ctrl'][ 'origUid']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'origUid'])) if (!empty( $tableDefinition[ 'ctrl'][ 'transOrigDiffSourceField']) &&! $this->isColumnDefinedForTable( $tables, $tableName, $tableDefinition[ 'ctrl'][ 'transOrigDiffSourceField'])) if (!empty( $tableDefinition[ 'ctrl'][ 'versioningWS']) &&(bool) $tableDefinition[ 'ctrl'][ 'versioningWS']===true &&! $this->isColumnDefinedForTable( $tables, $tableName, 't3ver_oid')) if (!empty( $tableDefinition[ 'ctrl'][ 'versioningWS']) &&(bool) $tableDefinition[ 'ctrl'][ 'versioningWS']===true &&! $this->isColumnDefinedForTable( $tables, $tableName, 't3ver_wsid')) if (!empty( $tableDefinition[ 'ctrl'][ 'versioningWS']) &&(bool) $tableDefinition[ 'ctrl'][ 'versioningWS']===true &&! $this->isColumnDefinedForTable( $tables, $tableName, 't3ver_state')) if (!empty( $tableDefinition[ 'ctrl'][ 'versioningWS']) &&(bool) $tableDefinition[ 'ctrl'][ 'versioningWS']===true &&! $this->isColumnDefinedForTable( $tables, $tableName, 't3ver_stage')) if (!empty( $tableDefinition[ 'ctrl'][ 'versioningWS']) &&(bool) $tableDefinition[ 'ctrl'][ 'versioningWS']===true &&! $this->isIndexDefinedForTable( $tables, $tableName, 't3ver_oid')) return TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::$tables

Definition at line 439 of file DefaultTcaSchema.php.

◆ $tables [3/4]

foreach ( $tableDefinition[ 'columns'] as $fieldName=> $fieldConfig) return TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::$tables

Definition at line 1157 of file DefaultTcaSchema.php.

◆ $tables [4/4]

if (! $this->isColumnDefinedForTable( $tables, $mmTableName, 'uid_local')) if (! $this->isIndexDefinedForTable( $tables, $mmTableName, 'uid_local')) if (! $this->isColumnDefinedForTable( $tables, $mmTableName, 'uid_foreign')) if (! $this->isIndexDefinedForTable( $tables, $mmTableName, 'uid_foreign')) if (! $this->isColumnDefinedForTable( $tables, $mmTableName, 'sorting')) if (! $this->isColumnDefinedForTable( $tables, $mmTableName, 'sorting_foreign')) if (!empty( $tcaColumn[ 'config'][ 'MM_oppositeUsage'])) if (! $needsUid &&$tables[ $mmTableName]->getPrimaryKey()===null &&!empty( $tcaColumn[ 'config'][ 'MM_oppositeUsage'])) elseif (! $needsUid &&$tables[ $mmTableName]->getPrimaryKey()===null) return TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::$tables

Definition at line 1305 of file DefaultTcaSchema.php.

◆ else

TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema::else
Initial value:
{
‪$tables[$tableName]->addColumn(
$this->‪quote($fieldName),
Types::INTEGER,
[
'default' => 0,
'notnull' => true,
'unsigned' => true,
]
)

Definition at line 473 of file DefaultTcaSchema.php.

‪TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema\quote
‪quote(string $identifier)
Definition: DefaultTcaSchema.php:1330
‪TYPO3\CMS\Core\Database\Schema\DefaultTcaSchema\$tables
‪$tables
Definition: DefaultTcaSchema.php:70