---
title: "Zugriff auf aggregierte Unterobjekte"
url: "https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte"
source: "typo3.net"
tags: ["Extensions","Extbase","Fluid","Frage"]
created: "2011-05-30"
last_reply: "2012-08-18"
replies: 9
solved: false
page: 1
pages: 1
lang: "de"
---

# Zugriff auf aggregierte Unterobjekte

Extensions › Extbase · 9 Antworten · gestartet 2011-05-30

## Eröffnungsbeitrag

**oliver_g** · 2011-05-30 · [Beitrag #1](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/1)

Hallo,

ich habe ein Objekt mit einer Relation zu einem anderen Objekt: z.B. Objekt A hat eine Auflistung von Objekten des Typs B. Rein Repositorymäßig ist schon alles da, wenn ich im Template via foreach durchiteriere, kommen meine Datensätze.

Meine Frage lautet nun: Wie kann ich direkt, also ohne foreach-Konstrukt auf den ersten Datensatz zugreifen? Ich habe schon viele Sachen probiert, wie z.B.:

{A.B.property} oder
{A.B.0.property} oder
{A.B[0].property} usw.

Nix führt zum Erfolg.

Vielen Dank für einen kurzen Tipp.

Gruß
Oliver

## Antworten

### [#2](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/2) · Unbekannter Benutzer · 2011-05-31

Kannst du nicht schon im Controller das eine Objekt auslagern und an einen separaten Platzhalter im View übergeben?

### [#3](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/3) · Unbekannter Benutzer · 2011-05-31

Habs grad selber mal versucht:

Der Platzhalter im View heißt bei mir **allObjects** bzw. **{allObjects}**.

Im Controller übergebe ich also so: **$this->view->assign('allObjects', $allObjects);**

**$allObjects** ist ein Array mit nummerischem Index (0,1,2,3,etc).

Im View kann ich dann darauf so zugreifen:

```html
<p>{allObjects.0.name}</p>
<p>{allObjects.1.name}</p>
```

Da du schon erwähnt hast, dass innerhalb der foreach Schleife alles funktioniert, fällt mir grad auch nichts ein. Du kannst dir ja mal das übergebene Array im Controller ausgeben lassen (via **t3lib_div::debug()**) und schauen was du da an Daten hast. Vielleicht klemmts ja wo anders?

Gruß.

### [#4](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/4) · oliver_g · 2011-05-31

Erst mal danke für den Tipp!

Hmm, ich hätte vielleicht erwähnen sollen, dass es sich bei meinem Objekt um ein Repository Objekt handelt, also ich hole mir z.B. A, welches wiederum Objekte des Typs B enthält mit.

Ich könnte natürlich als extra View Variable auslagern, aber das wäre nicht so optimal.

Ich guck mal mit der Debug Funktion.

### [#5](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/5) · Unbekannter Benutzer · 2011-06-03

Hi,

hast du hierzu schon eine Lösung gefunden? Ich denke, dass ich gerade vor dem gleichen Problem stehe!

Ich muss in meinem Controller auf Daten eines **StorageObjects** innerhalb eines **Domain Model Object** zugreifen, aber irgendwie kann ich nicht drauf zugreifen. Das gefundene Storage Object sieht so aus:

```php
<?php
Tx_Extbase_Persistence_ObjectStorage Object
(
    [storage:protected] => Array
        (
            [4ffb284a23993b06d4050aaad28eb5cc] => Tx_MyExt_Domain_Model_Partner Object
                (
                    [name:protected] => Partner1
                    [description:protected] => Blah
                    [image:protected] => 
                    [street:protected] => Musterstraße
                    [housenr:protected] => 123
                    [plz:protected] => 54321
                    [city:protected] => Musterstadt
                    [telefon:protected] => 098765431
                    [fax:protected] => 0987654321-1
                    [email:protected] => muster@domain.de
                    [url:protected] => www.domain.de
                    [_cleanProperties:private] => Array
                        (
                            [name] => Partner1
                            [description] => Blah
                            [image] => 
                            [street] => Musterstraße
                            [housenr] => 123
                            [plz] => 54321
                            [city] => Musterstadt
                            [telefon] => 098765431
                            [fax] => 0987654321-1
                            [email] => muster@domain.de
                            [url] => www.domain.de
                            [uid] => 3
                        )

                    [uid:protected] => 3
                    [isClone:private] => 
                )

        )

    [isInitialized:protected] => 1
)
?>
```

Das Domain Model **Partner** (Klasse des StorageObjects) verfügt z.B. über die Methode **Tx_MyExt_Domain_Model_Partner::getUrl** jedoch kann ich im Controller darauf so nicht zugreifen:

```php
<?php
/**
 * 
 * Display Detail View
 * 
 * @param int $partnerId
 * 
 * @return string The rendered HTML string
 */
public function detailAction($partnerId) {
	$allDiscounts = $this->discountRepository->findAll();
	foreach($allDiscounts as $key => $discount) {
		$partner = $discount->getPartner();
		t3lib_div::debug($partner->getUrl(), '$partner->getUrl()');
	}
	...
}
?>
```

Discount ist die Klasse, welche ein Object vom Typ Partner als StorageObject instanziert:

```php
<?php
/**
 * 
 * @var Tx_Extbase_Persistence_ObjectStorage<Tx_MyExt_Domain_Model_Partner>
 */
protected $partner;


/**
 * 
 * @return Tx_Extbase_Persistence_ObjectStorage<Tx_MyExt_Domain_Model_Partner>
 */
public function getPartner() {
  return clone $this->partner;
}
?>
```

Fehlermeldung beim Versuch **getUrl()** aufzurufen (Zeile 60 ist in diesem Fall der Aufruf von **getUrl()**):

```php
Fatal error: Call to undefined method Tx_Extbase_Persistence_ObjectStorage::getUrl() in /httpdocs/typo3conf/ext/vvs_myext/Classes/Controller/PartnerController.php on line 60
```

Bin für jeden Tipp dankbar! :)

### [#6](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/6) · Unbekannter Benutzer · 2011-06-03

Ich habs (denk ich) :)

**$partner = $discount->getPartner();** liefert das StorageObject vom Typ **Tx_Extbase_Persistence_ObjectStorage**. Bevor ich aber an die Daten des StorageObjects rankomme muss ich **Tx_Extbase_Persistence_ObjectStorage:current** aufrufen, damit ich an das eigentliche Objekt herankomme, welches dann vom gewünschten Typ **Tx_MyExt_Domain_Model_Partner** ist.

```php
<?php
$partner = $discount->getPartner(); // hier erhalten ich das StorageObject
$partner = $partner->current(); // Originalkommentar aus der Klasse ObjectStorage: Returns the current value of the storage array
t3lib_div::debug($partner->getUrl()); // erst jetzt kann ich die Methoden des Domain Models Partner ansprechen
?>
```

Coole Sache! :)

### [#7](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/7) · schmidtpublic · 2012-05-30

Hallo,

die Lösung von Typo3Cuckoo macht aber nur bei Show- und Edit-Views Sinn, denn dann kann ich für das eine Objekt das erste Unterobjekt ziehen.
Aber was ist mit Listen?

Wenn ich also in einer Liste von allen Mitgliedern die zugehörige Gruppe darstellen will, komme ich mit
{member.group.title} nicht weiter, weil group ein Unterobjekt ist, auf dass ich wieder mit current zugreifen müsste (was ich aber in der Fluidausgabe nicht kann?).

Natürlich geht's immer mit for-each-Schleifchen, aber das ist doch zu umständlich, wenn es eigentlich sowieso nur ein Unterobjekt (also hier: eine Gruppe) geben darf?

### [#8](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/8) · Unbekannter Benutzer · 2012-05-30

@schmidtpublic

hast du für deine Listenansicht nicht schon eine foreach Schleife? Wie wird diese durchlaufen?

### [#9](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/9) · schmidtpublic · 2012-05-30

Doch natürlich, die durchlaufe ich für alle Mitglieder und zeige die Daten des Mitglieds an.
Aber für die Gruppe des Mitglieds (wo's ja nur eine geben soll) hab ich dann wieder ein Unterobjekt, dass heißt hier müsste ich nun wieder eine Schleife einlegen, denn member.group.title bringt mich ja nicht weiter...

Versuche gerade irgendwas im Model zu stricken, so dass ich da direkt die current Row bekomme - aber das will noch nicht.
Vielleicht bin ich da aber auch auf einem ganz falschen Zweig...

### [#10](https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte/10) · tantebootsy · 2012-08-18

@Typo3Cuckoo: Vielen Dank für's Teilen deiner Lösung – genau danach habe ich soeben gesucht. :)

Hier nochmals ein Beispiel in Kurzform:

```php
public function mailSendAction(Tx_Playerbay_Domain_Model_Request $request) {
   $playerRepos = $request->getPlayer();
   $player = $playerRepos->current();
   $recipient = $player->getUsername();
}
```

---

Quelle: „Zugriff auf aggregierte Unterobjekte“, typo3.net, https://www.typo3.net/d/105650-zugriff-auf-aggregierte-unterobjekte
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
