[TYPO3-german] eigenes extbase Query im Domain Repository

g4-lisz at tonarchiv.ch g4-lisz at tonarchiv.ch
Wed Jun 14 15:15:37 CEST 2017


Hi Ralf-Rene,

ich befürchte, bei einem so hässlichen DB-Design gibt es auch nur eine
hässliche Lösung. ;)

Wenn man es auf der SQL-Seite lösen möchte, bräuchte man so was wie
EXPLODE, um mehrere Zeilen aus einem Datensatz zu machen. Zusätzlich
müsstest Du die PLZ-Bereiche auch noch mit String-Funktionen in zwei
Felder plzmin, plzmax parsen, damit Du sie matchen kannst.
Das scheitert aber alles daran, dass es kein EXPLODE gibt. Als Abhilfe
könnte man eine sog. Tally-Tabelle anlegen, welche alle möglichen PLZs
enthält. Dann kannst Du ein JOIN auf ein passendes String-Matching
machen und kriegst so eine Zeile je PLZ aller Datensätze. Die Bereiche
müsste man damit auch auf irgend eine Art normalisert kriegen. Auf jeden
Fall musst Du dazu ein eigenes SQL-Statement schreiben.
Das wäre wohl die performanteste Lösung.

Oder Du holst in dem Statement alle Zeilen der Tabelle und machst das
Explode in PHP.

Grüße,
Till


On 13.06.2017 22:09, Ralf-Rene Schroeder wrote:
> Hallo zusammen...
> vielleicht bringt mich ja hier jemand auf den richtigen Weg.
> Ich habe im Repository ein eigenes Query (hier natürlich verkürzt:
>
> public function findSpecialSearch($searchWord) {
>    $query = $this->createQuery();
>    $query->matching(
>        $query->like('orgPlzsuche', '%'.$searchWord.'%')              
>    )
>    return $query->execute();
>  }
>
> bisher hatte ich in 'orgPlzsuche' nur kommaseparierte Listen von PLZ,
> aber nun muss ich gemischte Listen nach folgendem Beispiel verarbeiten
> (einzele PLZ   UND   manchmal zusätzlich auch PLZ-Bereiche):
> 94034,94081,80001-80999,81200-81929,82222
>
> Wie würdet ihr hier die Bereiche verarbeiten ??? jemand eine Idee ???
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list