DEPRECATION WARNING

This documentation is not using the current rendering mechanism and will be deleted by December 31st, 2020. The extension maintainer should switch to the new system. Details on how to use the rendering mechanism can be found here.

->mapping

Contains mapping of tablename and fields in a table. Notice that entering any configuration for a table might affect performance since translation is needed before results are returned or queries executed.

Mapping is totally transparent for applications inside TYPO3 and mapping is independent of handler type - the translation goes on between these two spheres.

Mapping can work as a work-around for reserved field- or table names.

mapTableName

Key

mapTableName

Datatype

string

Description

Real, physical tablename for the table

mapFieldNames[fieldname]

Key

mapFieldNames[fieldname]

Datatype

string

Description

Real, physical fieldname in the table.

Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['dbal']['mapping'] = array(
    'sys_note' => array(
        'mapTableName' => 'SysNoteTable',
        'mapFieldNames' =>  array(
            'uid' => 'uid999',
            'pid' => 'pid999',
            'deleted' => 'deleted999',
            'tstamp' => 'tstamp999',
            'crdate' => 'crdate999',
            'cruser' => 'cruser999',
            'author' => 'author999',
            'email' => 'email999',
            'subject' => 'subject999',
            'message' => 'message999',
            'personal' => 'personal999',
            'category' => 'category999'
        )
    ),
    '_tt_content' => array(
        'mapTableName' => 'tt_content999',
        'mapFieldNames' => array(
            'bodytext' => 'bodytext999',
            'header' => 'header999',
            'image' => 'image999',
            'pid' => 'pid999',
            'sorting' => 'sorting999',
        )
    )
);

In this example two classic TYPO3 tables have been mapped; the sys_note table (from the sys_note extension) and the tt_content table (Content Elements).

According to this mapping example the sys_note table in the database (or whatever data source) is actually named SysNoteTable and all fields are actually named differently; with "...999" after (this is just an example).

When you try to make a look up in the sys_note like

SELECT uid FROM sys_note WHERE uid=123

then this is transformed into

SELECT uid999 FROM SysNoteTable WHERE uid999=123

before executed. And the result row which will be array('uid999' => 123) will be transformed back to array('uid' => 123) before you receive it inside of TYPO3.

Warning

Mapping tables to two different databases on localhost will most likely only work if [SYS][no_pconnect] is set in $TYPO3_CONF_VARS. Otherwise PHP will, regardless of DBAL maintaining different links for the databases, use the wrong one.