Zum Inhalt springen

MM Relations - Zwei Tabellen miteinander verknüpfen

Erstellt am 20. April 2018 · 5 Antworten · letzte Antwort am 22. Juni 2018

Tags: Extbase, TCA, TYPO3 8, Frage

dennismetz ·

Hallo Community,

ich stehe aktuell vor einem Problem wo ich einfach nicht weiterkomme.

Folgendes:

Ich habe eine Tabelle "Personen" und eine Tabelle "Studiengänge".

Eine Person soll mehreren Studiengängen zugeordnet werden können ("In" der Person kann man alle verfügbaren Studiengänge wählen, das klappt soweit auch, auch im Frontend).

Im Studiengang selbst soll man die Person aber nicht wählen können/müssen - das wäre doppelte arbeit.

- Um etwas weiter auszuholen warum: Es gibt eine Personendetailseite auf der alle Infos inkl. Studiengang stehen - den bekomme ich auch sauber ausgelesen. Die Studiengangsdetailseite soll anhand der Informationen (Studiengang ist Person XY zugeordnet) dann auch die Möglichkeit bieten die jeweilige Person anzuzeigen - hier scheitert es aber weil ich (im Augenblick) nicht weiß wie ich diese Person auslesen kann.

Ich bin mir nicht sicher was ich alles an Infos mitschicken soll bzw. was wichtig ist - wenn etwas fehlt reiche ich es auch gerne nach.

TCA Ausschnitt Person

'studycourse' => [
'exclude' => false,
'label' => 'LLL:EXT:...studycourse',
'config' => [
	'type' => 'select',
	'renderType' => 'selectSingleBox',
	'foreign_table' => 'tx_extension_domain_model_studyfinder',
	'MM' => 'tx_extension_persons_studyfinder_mm',
	'MM_opposite_field' => 'persons',
        ],
],

Im TCA - Studiengang gibt es kein Auswahlfeld.

Wie muss ich vorgehen damit ich in der Tabelle "Studiengang" z.B. die UID der Person bekomme?

gidouille ·

Hallo Denis,

geht es dir um die Anzeige im FE? Dann wäre das Problem vielleicht so ähnlich wie meins: #126711

Ins PersonRepository müsste eine Methode findByStudycourse() rein, die alle Personen findet, denen ein bestimmter Studiengang zugeordnet ist.

sehe ich das richtig so?

Grüße
gidouille

gidouille ·

Das musste dann ungefähr so aussehen (in PersonRepository):

public function findByStudycourse() {
  $query = $this->createQuery();
  $query->matching($query->equals('person.studycourse', 'settings.mycourse'));
  return $query->execute();
}

aber genau das funktioniert bei mir eben nicht.

Wenn es funktionieren würde, käme ein array aller Personen zurück, denen ein Studiengang der in settings.mycourse festgesetzt wurde, zugeordnet ist.

Grüße
gidouille

freeatweb ·

Hallo,

einfach die Logik umdrehen.

1.) Actions (z.b. List, Show) für Studiengänge anlegen
2.) für diese Actions FLUID Templates anlegen

Im FLUID-Template der detail-Ansicht die ganzen Personen zum Studiengang in einer for-schleife ausgeben.

z.B.

<for each="{studiengaenge.person}" as="person}">
Vorname: {person.vorname}
usw. usf.
</f:for>