MM

New in version 11.4

TCA table column fields that define ['config']['MM'] can omit the specification of the intermediate MM table layout in ext_tables.sql. The TYPO3 database analyzer takes care of proper schema definition.

Extensions are strongly encouraged to drop CREATE TABLE definitions from the ext_tables.sql file for those intermediate tables referenced by TCA table columns. Dropping these definitions allows the Core to adapt and migrate definitions if needed.

MM (type => inline)
Path

$GLOBALS['TCA'][$table]['columns'][$field]['config']

type

string (table name)

Scope

Proc.

This value contains the name of the table in which to store an MM relation. It is used together with foreign_table. The database field with a MM property only stores the number of records in the relation.

Please have a look into the additional information in the MM common property description.

MM_hasUidField (type => inline)
type

boolean

Scope

Proc.

If the multiple property is set with MM relations you must set this value to true and include a UID field. Otherwise, sorting and removing relations will be buggy.

MM_opposite_field (type => inline)
type

string (field name)

Scope

Proc.

If you want to make a MM relation editable from the foreign side (bidirectional) of the relation as well, you need to set MM_opposite_field on the foreign side to the field name on the local side.

For example, if the field companies.employees is your local side and you want to make the same relation editable from the foreign side of the relation in a field called persons.employers, you would need to set the MM_opposite_field value of the TCA configuration of the persons.employers field to the string "employees".

Examples

Inline field with MM table configured

An inline field with MM relation
EXT:styleguide/Configuration/TCA/tx_styleguide_inline_mm.php
[
    'columns' => [
        'inline_1' => [
            'exclude' => 1,
            'label' => 'inline_1',
            'config' => [
                'type' => 'inline',
                'foreign_table' => 'tx_styleguide_inline_mm_child',
                'MM' => 'tx_styleguide_inline_mm_child_rel',
                'MM_hasUidField' => true,
                'appearance' => [
                    'showSynchronizationLink' => 1,
                    'showAllLocalizationLink' => 1,
                    'showPossibleLocalizationRecords' => 1,
                ],
            ],
        ],
    ],
]
Copied!

Opposite field to display MM relations two ways

An inline field with MM relation
EXT:styleguide/Configuration/TCA/tx_styleguide_inline_mm_child.php
[
    'columns' => [
        'parents' => [
            'exclude' => 1,
            'label' => 'parents',
            'config' => [
                'type' => 'inline',
                'foreign_table' => 'tx_styleguide_inline_mm',
                'MM' => 'tx_styleguide_inline_mm_child_rel',
                'MM_hasUidField' => true,
                'MM_opposite_field' => 'inline_1',
                'maxitems' => 10,
                'appearance' => [
                    'showSynchronizationLink' => 1,
                    'showAllLocalizationLink' => 1,
                    'showPossibleLocalizationRecords' => 1,
                ],
            ],
        ],
    ],
]
Copied!