---
title: "mm-Problem in such-Query über mehrere Felder in 4.7"
url: "https://www.typo3.net/d/115751-mm-problem-in-such-query-ueber-mehrere-felder-in-47"
source: "typo3.net"
tags: ["Extensions","Extbase","Datenbank","Frage","Suche"]
created: "2013-08-15"
last_reply: "2013-09-18"
replies: 3
solved: false
page: 1
pages: 1
lang: "de"
---

# mm-Problem in such-Query über mehrere Felder in 4.7

Extensions › Extbase · 3 Antworten · gestartet 2013-08-15

## Eröffnungsbeitrag

**zabinetta** · 2013-08-15 · [Beitrag #1](https://www.typo3.net/d/115751-mm-problem-in-such-query-ueber-mehrere-felder-in-47/1)

Liebe Extbase-Checker,
ich will im Repository eine Suchanfrage verarbeiten, über mehrere Felder und Tabellen.
die Tabellen:

- Termine

  - Lehrgänge

    - - Keywords (mm, wird zugeordnet von der Lehrgangstabelle aus)

ich durchsuche mehrere Felder in Lehrgänge, und dann die Keywords, die als mm-Relation dabei sind.
An sich klappt die Suche.
Ausser bei Lehrgängen die kein einziges Keyword haben. Die werden dann einfach nicht gefunden.

Es gibt eine Besonderheit in der Datenbank: ich habe in Lehrgänge das Feld rausgenommen, das die Keywords zählt (wir importieren die Lehrgänge regelmäßig aus einem anderen System nach TYPO3)

kennt jemand dieses Problem, und weiß evtl. ob das schon gelöst ist und ab welcher TYPO3-Version (wir haben 4.7) oder einen Workaround?
habe verschiedenes probiert, es klappt aber nicht:

```php
foreach ($propertiesToSearch as $propertyName) {
					$searchWordConstraints[] = $query->like($propertyName, '%' . $mySearchWord . '%');
				  }
				  $constraints[] = $query->logicalAnd(
									$query->logicalOr(
										$searchWordConstraints
										//,$query->like('relLga.keywords.keyword', '%' . $mySearchWord . '%')
										//auch lehrgänge ohne keywords werden durchsucht
										//,$query->contains('relLga.keywords',  $mySearchWord )
										,$query->contains('relLga.keywords.keyword',  '' )
										)
									);
```

## Antworten

### [#2](https://www.typo3.net/d/115751-mm-problem-in-such-query-ueber-mehrere-felder-in-47/2) · harald1972 · 2013-08-28

Hallo zabinetta,

soweit ich weiß, funktionieren logicalAnd, logicalOr und noch ein paar weitere Funktionen nur mit genau 2 Parametern.

```php
$query->logicalOr( $searchWordConstraints );
```

$searchWordConstraints muss dann also ein Array mit 2 Elementen sein.

Ansonsten musst du das ganze verschachteln, prinzipiell so:

```php
$query->logicalOr( $c1,
   $query->logicalOr( $c2,
      $query->logicalOr( $c3, $c4 )));
```

### [#3](https://www.typo3.net/d/115751-mm-problem-in-such-query-ueber-mehrere-felder-in-47/3) · Unbekannter Benutzer · 2013-08-29

Du kannst meines Wissens auch mehr Argumente angeben. Das Problem ist wohl eher, dass Du eigentlich prüfen willst ob count(relLga.keywords) == 0

also sowas wie:
$query->equals('relLga.keywords', new Tx_Extbase_Persistence_ObjectStorage())

Bin mir aber nicht sicher ob das funktioniert.

### [#4](https://www.typo3.net/d/115751-mm-problem-in-such-query-ueber-mehrere-felder-in-47/4) · zabinetta · 2013-09-18

Hallo zusammen,
vielen Dank für euere Hilfe.
@harald: die $searchWordConstraints sind ein array, mit mehr parametern, und das klappt schon, das problem ist wirklich die mm-Relation
@kitsunet: ich glaub es ist eher eine Extbase-Problematik mit den mm-Tabellen, denn
ich hab das ding mittlerweile gelöst, allerdings nicht auf die feine Art:
nachdem ich beim Datenbank-Import nochmal für jede row eine mm-Relation auf einen bestimmten Dummy-Eintrag gelegt habe, also jeder Eintrag nachher definitiv mindestens eine Relation mit relLga.keywords hatte, hat die Keywordsuche für alle lga funktioniert.
Sicher ist das nicht toll in richtung Performance, aber für mich momentan die Möglichkeit mit am wenigsten verbasteln. Wenn wir anfang nächsten Jahres den Site auf die 6.2 hochziehen, mach ich nochmal nen Versuch ohne.

---

Quelle: „mm-Problem in such-Query über mehrere Felder in 4.7“, typo3.net, https://www.typo3.net/d/115751-mm-problem-in-such-query-ueber-mehrere-felder-in-47
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
