---
title: "Repository query->matching Verschachtelung"
url: "https://www.typo3.net/d/112176-repository-query-matching-verschachtelung"
source: "typo3.net"
tags: ["Extensions","Extbase","Frage"]
created: "2012-09-19"
last_reply: "2012-09-20"
replies: 3
solved: false
page: 1
pages: 1
lang: "de"
---

# Repository query->matching Verschachtelung

Extensions › Extbase · 3 Antworten · gestartet 2012-09-19

## Eröffnungsbeitrag

**kjuuze** · 2012-09-19 · [Beitrag #1](https://www.typo3.net/d/112176-repository-query-matching-verschachtelung/1)

Hallo zusammen

Ich habe ein Problem im Repository, welchem ich einfach nicht auf den Grund komme. Ich habe zwei Werte (werden später noch mehr), nach welchen in Filtern will. Mit nur einem Wert funktioniert das Filtern bestens. Ich möchte jedoch beide Werte so verknüpfen, dass nur noch die Objekte zurückgegeben werden, auf welche beide (oder später alle) Werte zutreffen.

Alleinstehend sieht das bei mir momentan so aus:

```php
public function filterAndSortBy($filter1, $filter2, $ordering) {
  $query = $this->createQuery();
  if(isset($filter1)) {
    $query->matching($query->equals('wert1', $filter1));	
  }
  if(isset($filter2)) {
    $query->matching($query->equals('wert2', $filter2));	
  }
						
  $query->setOrderings($ordering);
  return $query->execute();
}
```

So wird immer nur "filter2" berücksichtigt. Nun habe ich selbstverständlich die Weiten des Internets befragt und rausgekriegt, dass das wohl irgendwie mit logicalAnd() verschachtelt werden muss. Ich kriegs aber einfach nicht hin, dass beide Filter in "Aktion" treten.

Falls mir jemand helfen kann, wäre mein Tag gerettet ;-)

Grüsse
Markus

## Antworten

### [#2](https://www.typo3.net/d/112176-repository-query-matching-verschachtelung/2) · LuP · 2012-09-19

Hallo,

probiere es mal wie folgt:

```php
public function filterAndSortBy($filter1=NULL, $filter2=NULL, $ordering) {
    $query = $this->createQuery();

    $filterArr = array('wert1' => $filter1, 'wert2' => $filter2);

    foreach($filterArr as $property => $filter) {
    	if(isset($filter)) {
            $constraintArr[] = $query->equals($property, $filter);
    	}
    }

    $query->setOrderings($ordering);

    return $query->matching($query->logicalAnd($constraintArr))->execute();
}
```

VG,
LuP

### [#3](https://www.typo3.net/d/112176-repository-query-matching-verschachtelung/3) · kjuuze · 2012-09-19

Hey, vielen Dank schon mal. Das sieht schon recht vielversprechend aus. Wusste nicht, dass man logicalAnd() ein Array übergeben kann. Aber scheinbar ist das seit Extbase 1.1 möglich. Werde es morgen mal versuchen und über Erfolg oder Misserfolg berichten.

Gruss

### [#4](https://www.typo3.net/d/112176-repository-query-matching-verschachtelung/4) · kjuuze · 2012-09-20

Funktioniert perfekt so wie LuP das gepostet hat. Das schöne daran: Nicht viel Code und kann um beliebig viele Filterkriterien erweitert werden.

Vielen Dank an LuP!!!

---

Quelle: „Repository query->matching Verschachtelung“, typo3.net, https://www.typo3.net/d/112176-repository-query-matching-verschachtelung
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
