---
title: "Extbase 1:n Relationen mit Gemappten Tabellen"
url: "https://www.typo3.net/d/119017-extbase-1n-relationen-mit-gemappten-tabellen"
source: "typo3.net"
tags: ["Extensions","Extbase","Frage"]
created: "2014-10-15"
last_reply: "2014-10-21"
replies: 1
solved: false
page: 1
pages: 1
lang: "de"
---

# Extbase 1:n Relationen mit Gemappten Tabellen

Extensions › Extbase · 1 Antwort · gestartet 2014-10-15

## Eröffnungsbeitrag

**silverstallion** · 2014-10-15 · [Beitrag #1](https://www.typo3.net/d/119017-extbase-1n-relationen-mit-gemappten-tabellen/1)

Hallo Community,

ich springe gleich mal mit der Tür ins Haus:

Ich versuche seit 2 Tagen eine vernünftige 1:n Relation zwischen den Tabellen "pages" und "tt_content" auf die Reihe zu bekommen. Gemappt wurden die Tabellen erfolgreich, lassen sich getrennt von einander wunderbar "ansprechen". Das Hauptziel ist es aber, die tt_contents im pages-View aufzurufen.
Im Model/Pages.php habe ich den Property *contents* als
*.../ObjectStorage<\vendor\extension\domain\model\Contents>* angelegt. Der Property wird dann auch im __construct() als ObjectStorage initialisiert. Nur ist es so, dass die contents im Fluid immer NULL sind. Die Extension wurde mit extension_builder erstellt. Es ist auch suspekt, dass in den Konstruktor nicht "reingesprungen" wird. Das habe ich versucht mit *var_dump('text');exit;* abzufangen. Im TCA sind die Relationen auch eingetragen (TCA dient ja nur der Backend-Konfiguration, richtig?) (unter 'foreign_table' habe ich sowohl tt_content versucht einzutragen als auch tx_extension_model_... beides ohne Erfolg.)

Die wesentliche Frage ist also:
Besteht überhaupt die Möglichkeit, die Gemappten Models/Tabellen zwischeneinander zu relationalisieren (ohne zusätzliche Tabellen anzulegen)?
Mit Extbase beschäftige ich mich noch nicht allzulange, deswegen hoffe ich dass, ich nur etwas banales vergessen habe.
Vielen Dank für eure Hilfe!

Dateien:
Domain/Model/Pages.php

class Pages extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
...
	/**
	 * contents
	 *
	 * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Schimpf\Newsteasersimple\Domain\Model\Contents>
	 * @cascade remove
	 */
	protected $contents = NULL;

/**
	 * __construct
	 */
	public function __construct() {
		//Do not remove the next line: It would break the functionality
		$this->initStorageObjects();
	}

/**
	 * Initializes all ObjectStorage properties
	 * Do not modify this method!
	 * It will be rewritten on each save in the extension builder
	 * You may modify the constructor of this class instead
	 *
	 * @return void
	 */
	protected function initStorageObjects() {
		$this->contents = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage();
	}
...

/**
	 * Adds a Contents
	 *
	 * @param \Schimpf\Newsteasersimple\Domain\Model\Contents $content
	 * @return void
	 */
	public function addContent(\Schimpf\Newsteasersimple\Domain\Model\Contents $content) {
		$this->contents->attach($content);
	}

/**
	 * Removes a Contents
	 *
	 * @param \Schimpf\Newsteasersimple\Domain\Model\Contents $contentToRemove The Contents to be removed
	 * @return void
	 */
	public function removeContent(\Schimpf\Newsteasersimple\Domain\Model\Contents $contentToRemove) {
		$this->contents->detach($contentToRemove);
	}

/**
	 * Returns the contents
	 *
	 * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Schimpf\Newsteasersimple\Domain\Model\Contents> $contents
	 */
	public function getContents() {
		return $this->contents;
	}

}

TCA:
...
		'contents' => array(
			'exclude' => 1,
			'label' => 'LLL:EXT:newsteasersimple/Resources/Private/Language/locallang_db.xlf:tx_newsteasersimple_domain_model_pages.contents',
			'config' => array(
				'type' => 'inline',
				//'foreign_table' => 'tx_newsteasersimple_domain_model_contents',
				'foreign_table' => 'tt_content',
				'foreign_field' => 'pid',
				'maxitems'      => 9999,
				'appearance' => array(
					'collapseAll' => 0,
					'levelLinksPosition' => 'top',
					'showSynchronizationLink' => 1,
					'showPossibleLocalizationRecords' => 1,
					'showAllLocalizationLink' => 1
				),
			),

),
...

setup.txt:
plugin.tx_newsteasersimple{

persistence {
                classes {
                    Schimpf\Newsteasersimple\Domain\Model\Contents {
                        mapping {
                                tableName = tt_content
                                columns {
                                    pid.mapOnProperty = pid
                                    uid.mapOnProperty = uid
                                   }

                           }
                        }

Schimpf\Newsteasersimple\Domain\Model\Pages {
                        mapping {
                            tableName = pages
                            columns {
                                uid.mapOnProperty = uid
                                pid.mapOnProperty = pid
                                title.mapOnProperty = title
                                sorting.mapOnProperty = sorting
                            }

}
                    }
                }
	}
}

## Antworten

### [#2](https://www.typo3.net/d/119017-extbase-1n-relationen-mit-gemappten-tabellen/2) · Unbekannter Benutzer · 2014-10-21

Ich glaube du baust deine Relation in die falsche Richtung.
Wenn ich das richtig verstehe, möchtest du X beliebige Contents auf genau einer Seite ausgeben/anzeigen.
Oder andersrum gesagt, du möchtest auf einer Seite beliebig viele Contents ausgeben.

Wenn du eine 1:n Relation ohne Relation-Table realisieren willst, muss die Relation von dem Element ausgehen, dass genau eine zugehörige Relation haben kann ( also in diesem Fall müsste die Relation in Contents realisiert sein, nicht in Pages ), zumindest denke ich mir das, da ich nicht wüsste, dass man in aktuellen Umgebungen mit kommaseparierten Listen in Relationen arbeitet ;)

Sollte also obige Annahme stimmen, würde ich an deiner Stelle mal probieren, die Relation aus der anderen Richtung zu realisieren.

Andernfalls kommst du um eine Relation-Table denke ich nicht herum ( ist ja jetzt auch nicht sooo dramatisch..? ). Was spricht aus deiner Sicht eigentlich gegen die Relation-Table ?

---

Quelle: „Extbase 1:n Relationen mit Gemappten Tabellen“, typo3.net, https://www.typo3.net/d/119017-extbase-1n-relationen-mit-gemappten-tabellen
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
