---
title: "Eine n:m Verknüpfung mit Zusatzdaten"
url: "https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten"
source: "typo3.net"
tags: ["Extensions","Entwicklung","Frage","TCA"]
created: "2009-02-03"
last_reply: "2009-04-06"
replies: 8
solved: false
page: 1
pages: 1
lang: "de"
---

# Eine n:m Verknüpfung mit Zusatzdaten

Extensions › Entwicklung · 8 Antworten · gestartet 2009-02-03

## Eröffnungsbeitrag

**zappzarapp** · 2009-02-03 · [Beitrag #1](https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten/1)

Hallo,

ich würde gerne folgende Erweiterung erstellen: Es gibt beliebig viele Mitarbeiter die man einem Team zuweisen kann, und in diesem Team hat der Mitarbeiter eine bestimmte Funktion, sie kann aber pro Team unterschiedlich sein.

Also man hat:
 Mitarbeiter 1 (Vorname, Nachname, Bild, Beschreibung, etc.)
 Mitarbeiter 2
 Mitarbeiter 3

Team 1 besteht aus:
 Mitarbeiter 1 als Projektmanager (Funktion als Freitext)
 Mitarbeiter 2 als Programmierer
Team 2 besteht aus:
 Mitarbeiter 3 als Projektmanager
 Mitarbeiter 1 als Programmierer
(Also ist Mitarbieter 1 in Team 1 und 2 aber mit unterschiedlichen Funktionen)

Das heißt die n:m Tabelle muss außer den Relationsfeldern noch ein Eingabefeld für die Funktion haben. Ist es möglich das mit den Typo3 Funktionen zu lösen und wenn ja wie? Wenn ich so eine Extension mit echter n:m Verknüpfung mit dem Kickstart anlege, kann ich zwar Mitarbeiter zu Teams zuordnen, aber habe keine Möglichkeit noch zusätzliche Eingabfelder anzugeben.

lg Matthias

## Antworten

### [#2](https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten/2) · meckpo · 2009-02-03

Hallo Matthias,

ja das kann man mit dem Kickstarter nicht erzeugen. Nimm dir wenn du mit dem Kickstarter fertig bist deine erzeugt tca.php und füge einfach das Feld in der Zwischenrelation hinzu (musst du analog dann auch in ext_tables.php und ext_tables.sql machen).

Die Pflege solcher Daten geht wahrscheinlich am besten, wenn du den Typ in tca.php auf "inline" umstellst. Dann kannst du nämlich die Daten der Zwischentabelle auch direkt am Originaldatensatz bearbeiten. Näheres zu "inline" findest du hier:
<https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Index.html>

### [#3](https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten/3) · zappzarapp · 2009-02-04

Ok,

danke mal für den Hinweis. Ich habe jetzt schon einige Zeit rumgetan und auch mit dem IRRE Tutorial versucht aber ich bekomme die m:n Relation einfach nicht richtig hin.

Ich kann bei einem Team eine neue Relation anlegen und eine Person zuweisen (allerdings könnte ich auch ein anderes Team zuweisen), sieht also folgendermaßen aus:
[Bild: zappzarapp.at/mn_relation.jpg](http://zappzarapp.at/mn_relation.jpg)

Die Relationen werden richtig angelegt, wenn ich den Datensatz jedoch speichere und wieder einsteige bekomme ich keine Relationen angezeigt.

Ich habe nur eine ganze einfache Extension erstellt ohne irgendwelche Zusatzfelder. Also wirklich nur Name der Person, Name des Team und die Relation. Hier meine tca.php, meiner Meinung nach habe ich alles genauso wie im IRRE Tutorial oder in dem von dir verlinken Beispiel gemacht, vielleicht kennt sich ja jemand damit aus und findet schnell meinen Fehler?

```php
<?php
if (!defined ('TYPO3_MODE')) 	die ('Access denied.');

$TCA['tx_team_teams'] = array (
	'ctrl' => $TCA['tx_team_teams']['ctrl'],
	'interface' => array (
		'showRecordFieldList' => 'name'
	),
	'feInterface' => $TCA['tx_team_teams']['feInterface'],
	'columns' => array (
		'name' => array (		
			'exclude' => 0,		
			'label' => 'LLL:EXT:team/locallang_db.xml:tx_team_teams.name',		
			'config' => array (
				'type' => 'input',	
				'size' => '30',
			)
		),
		'persons' => Array(      
			'label' => 'Persons',      
			'config' => Array(        
				'type' => 'inline',        
				'foreign_table' => 'tx_team_persons_teams',        
				'foreign_field' => 'persons',       
				'foreign_label' => 'teams',
			),    
		),  
	),
	'types' => array (
		'0' => array('showitem' => 'name;;;;1-1-1,persons;;;;3-3-3')
	),
	'palettes' => array (
		'1' => array('showitem' => '')
	)
);

$TCA['tx_team_persons'] = array (
	'ctrl' => $TCA['tx_team_persons']['ctrl'],
	'interface' => array (
		'showRecordFieldList' => 'name'
	),
	'feInterface' => $TCA['tx_team_persons']['feInterface'],
	'columns' => array (
		'name' => array (		
			'exclude' => 0,		
			'label' => 'LLL:EXT:team/locallang_db.xml:tx_team_persons.name',		
			'config' => array (
				'type' => 'input',	
				'size' => '30',
			)
		),
		'teams' => Array(      
			'label' => 'Teams',      
			'config' => Array(        
				'type' => 'inline',        
				'foreign_table' => 'tx_team_persons_teams',        
				'foreign_field' => 'teams', 
				'foreign_label'	=> 'persons',      
			),    
		),  
	),
	'types' => array (
		'0' => array('showitem' => 'name;;;;1-1-1,teams')
	),
	'palettes' => array (
		'1' => array('showitem' => '')
	)
);


$TCA['tx_team_persons_teams'] = array (
	'ctrl' => $TCA['tx_team_persons_teams']['ctrl'],
	'interface' => array (
		'showRecordFieldList' => 'person,team,function'
	),
	'feInterface' => $TCA['tx_team_persons_teams']['feInterface'],
	'columns' => array (
		'person' => array (		
			'exclude' => 0,		
			'label' => 'LLL:EXT:team/locallang_db.xml:tx_team_persons_teams.person',		
			'config' => array (	
				'type' => 'select',	
				'foreign_table' => 'tx_team_persons',
				'maxitems' => 1,
			)
		),
		'team' => array (		
			'exclude' => 0,		
			'label' => 'LLL:EXT:team/locallang_db.xml:tx_team_persons_teams.team',		
			'config' => array (
				'type' => 'select',	
				'foreign_table' => 'tx_team_teams',
				'maxitems' => 1,
			)
		),
		'function' => array (		
			'exclude' => 0,		
			'label' => 'LLL:EXT:team/locallang_db.xml:tx_team_persons_teams.function',		
			'config' => array (
				'type' => 'input',	
				'size' => '30',
			)
		),
	),
	'types' => array (
		'0' => array('showitem' => 'person;;;;1-1-1, team, function')
	),
	'palettes' => array (
		'1' => array('showitem' => '')
	)
);
?>
```

lg Matthias

### [#4](https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten/4) · meckpo · 2009-02-05

Hallo,

also so wie du es gepostet hats ist mal wenigstens ein Tippfehler drin:

'foreign_field' => 'teams',

Die Spalte heisst aber einfach "team" ohne "s". Ich meine aber auch, dass es an der Stelle heissen musss
'foreign_field' => 'person',

### [#5](https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten/5) · zappzarapp · 2009-02-05

Vielen Dank,

jetzt funktioniert es. Zum einen das "s" zuviel und team/person habe ich - wie du auch richtig gesagt hast - verdreht gehabt bei den foreign_fields.

:)

lg Matthias

### [#6](https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten/6) · zappzarapp · 2009-02-05

Ok,

das klappt jetzt einmal super, aber ich habe jetzt doch noch eine Frage dazu:

Wenn ich dieses TCA-Feld für die Relation anlege und dann den Hauptdatensatz speichern will, bekomme ich einen mysql Fehlermeldung weil ihm das Feld "persons" in der Team-Tabelle fehlt (das ja nicht benötigt wird). Bis jetzt habe ich das bei meinen inline-relations immer so gelöst, dass ich das Feld in der Datenbank angelegt habe, aber das ist ja eigentlich ein ziemlicher Pfusch - man kann doch sicher auch angegeben, dass dieses Feld nicht in das MYSQL Statement einbezogen werden soll - oder?

Ahja und etwas zweites: Ist es möglich, dass ich eine fixe Seite für die Speicherung der Relationen angebe? Also das alle Relationen in einem Sys-Ordner gespeichert werden und nicht auf der Seite auf der ich z.B. das Team anlege.

lg Matthias

### [#7](https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten/7) · meckpo · 2009-02-05

Hallo,

nein, das Feld muss tatsächlich existieren, wie alle Felder die du im TCA angibst.

Eine fixe Spalte für Tabellen kannst du im Page-Typoscript (z.B. deiner Root-Page) festlegen:

```typoscript
TCAdefaults.tx_team_persons_teams.pid = 42
```

### [#8](https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten/8) · zappzarapp · 2009-02-24

Hi,

habe die Defaults jetzt in die Benutzergruppe der Redakteure gesetzt (im Page Template wollte es nicht funktionieren). Da funktioniert es jetzt testweise mit den Zusatzfeldern in der m:n verknüpfung, aber die PID kann ich da leider nicht einsetzen - da wird immer die aktuelle Seite verwendet.

So sieht die Benutzer TS Konfig aus:
TCAdefaults.tx_teams_team_person.pid = 22
TCAdefaults.tx_teams_team_person.function = test

"Test" wird eingetragen aber 22 nicht.

Mir würde es ja schon reichen wenn ich die Möglichkeit hätte die Anzeige der Datensätze für den Redakteursbenutzer auszublenden. Aber wenn ich in den User-Settings "Anzeigen" deaktivere und "Bearbeiten" aktivere werden die Datensätze trotzdem angezeigt.

lg

### [#9](https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten/9) · meckpo · 2009-04-06

Hallo,

wie gesagt: Der Eintrag gehört ins Page-TSConfig (nicht ins Template und nicht ins User-TSConfig).
Also unter "Seiteneigenschaften" und dort ins Feld "TSConfig".

---

Quelle: „Eine n:m Verknüpfung mit Zusatzdaten“, typo3.net, https://www.typo3.net/d/86430-eine-nm-verknuepfung-mit-zusatzdaten
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
