---
title: "Fremdschlüssel setzen"
url: "https://www.typo3.net/d/125790-fremdschluessel-setzen"
source: "typo3.net"
tags: ["Extensions","Extbase","Datenbank","Frage","TYPO3 8"]
created: "2017-03-07"
last_reply: "2017-03-10"
replies: 3
solved: false
page: 1
pages: 1
lang: "de"
---

# Fremdschlüssel setzen

Extensions › Extbase · 3 Antworten · gestartet 2017-03-07

## Eröffnungsbeitrag

**getit** · 2017-03-07 · [Beitrag #1](https://www.typo3.net/d/125790-fremdschluessel-setzen/1)

Da ich jetzt seit 3 Wochen einfach nicht weiter komme, frage ich euch:

Also ich habe zwei Tabellen:
Ansprechpartner - Behoerde (n:m)
Im Model für den Ansprechpartner ist ein Feld: behoerdeId

Mein AnsprechparnterController::addFormAction() sieht so aus:

```php
/**
 * @param Ansprechpartner|null $ansprechpartner
 */
public function addFormAction(Ansprechpartner $ansprechpartner = null) {
  $this->view->assign('ansprechpartner', $ansprechpartner);
  $this->view->assign('behoerden', $this->behoerdeRepository->findAll());
}
```

Das entsprechende Template:

```php
<f:form action="add" object="{ansprechpartner}" name="ansprechpartner" arguments="{behoerde:behoerdeId}" additionalAttributes="{role:'form'}">
...
<div class="form-group row">
  <label>Behörde</label>
  <f:form.select options="{behoerden}" optionLabelField="bezeichnung" property="behoerdeId" class="form-control"/>
</div>
</f:form>
```

Und die Ansprechpartner::addAction()

```php
/**
 * @param Ansprechpartner $ansprechpartner
 * @param Behoerde $behoerde
 */
public function addAction(Ansprechpartner $ansprechpartner, Behoerde $behoerde) {
  $ansprechpartner->addBehoerdeId($behoerdeId);
  $this->ansprechpartnerRepository->add($ansprechpartner);
  $this->redirect('list');
}
```

Ich bekomme aber beim Absenden des Formulars (AddForm) immer nur Fehlermeldung. Entweder 'Required argument "behoerde" is not set' (mit den Paramter wie geschrieben) oder 'Invalid property mapping'.
Kann mir jemand weiterhelfen?

## Antworten

### [#2](https://www.typo3.net/d/125790-fremdschluessel-setzen/2) · getit · 2017-03-08

Also ein Freund konnte mich etwas weiterbringen.

Die Property $behoerde muss aus den Actions addFormAction() und addAction() weg.
Ebenfalls das Attribut 'arguments' im  Formular.

Damit ist aber das ObjectStorage im $ansprechpartner (Debugausgabe in addAction() als erste Zeile) empty.

```php
KKSoftware\Kkbaybw\Domain\Model\Ansprechpartnerprototypetransient entity
  baybwId => protected 23 (integer)
  behoerdeId => protectedTYPO3\CMS\Extbase\Persistence\ObjectStorageprototype object (empty)
```

Im $this->request liegt die Information, in diesem Bsp.

```php
TYPO3\CMS\Extbase\Mvc\Web\Requestprototype object
  ...
  arguments => protected array(3 items)
    ...
    ansprechpartner => array(2 items)
      baybwId => '23' (2 chars)
      behoerdeId => '3' (1 chars)
```

Im $ansprechpartner ist diese aber empty? Wieso?

### [#3](https://www.typo3.net/d/125790-fremdschluessel-setzen/3) · getit · 2017-03-08

Ich habe eine kleine Extension zum testen geschrieben.

Für alle denen es so geht wie mir, hier nochmal der genau weg das Plugin einzubinden:
1. Die test.zip nach typo3conf\ext entpacken
2. Im ExtensionManager die Extension 'test' aktivieren
3. Das statische Template 'test' (zusätzlich zu: 'Content elements (fluid_styled_content)') hinzufügen
4. Das TS der Seite anpassen, minimal:

```typoscript
page = PAGE
page.10 < styles.content.get
```

5. Der Seite einen Inhalt vom Typ 'Plugin' hinzufügen (Selected Plugin: 'Export')

Beim Abschicken des AddFormulars (beim Ansprechpartner) habe ich in Ansprechpartner::addAction() einen var_dump eingebaut.
Hier ist bei mir die behoerdeId immer empty.

Was mache ich falsch?

Die Datei kann hier: <https://www.dropbox.com/s/k1bcdkx8nzuszdm/test.zip?dl=0> runtergeladen werden.

### [#4](https://www.typo3.net/d/125790-fremdschluessel-setzen/4) · getit · 2017-03-10

:D Ich habe den Fehler gefunden :D:D:D

Das Selectfeld im Form muss so aussehen

```html
<f:form.select options="{behoerden}" property="behoerdeId" optionLabelField="bezeichnung" size="5" multiple="1" class="form-control" />
```

Das ist alles!!

---

Quelle: „Fremdschlüssel setzen“, typo3.net, https://www.typo3.net/d/125790-fremdschluessel-setzen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
