SELECT Query

Um ein eigenes SELECT Query in Extbase zu erstellen nutzt man die Methode statement(). Hier kann als zweiter Parameter optional ein Array mit Werten mitgegeben werden. Die statement()-Methode wird nicht meht unterstüzt.

Möchten wir in der Repository eine eigene Abfrage erzeugen, welche alle Datensätze zurückgibt, bei der das Feld a gleich 1 ist könnte man dies wie folgt aufbauen. Hierbei handelt es sich nur um ein Beispiel wie man eine eigene Methode in der Repository erstellt. Die Abfrage würde ohne zusätzlichen Aufwand mit der bestehenden Methode findByA(1) das gleiche Resultat erzeugen.

<?php
  $query = $this->createQuery();
  return $query->matching(
      $query->equals('a', 1),
  )->execute()->toArray();

Mögliche Abfragen:

equals(Eigenschaft, Wert, GrossKleinSchreibung);
Der Parameter GrossKleinSchreibung ist true. Das heisst, wenn wir als dritten Parameter der equals()-Methode ‚false‘ schreiben, dann wird die Gross-/Kleinschreibung nicht berücksichtigt.

$query->equals('title', 'Test');

Weitere Abfrage Methoden:

  • withUid(Uid des Datensatzes);
  • in(Eigenschaft, Werte);
  • contains(Eigenschaft, Wert);
  • like(Eigenschaft, Wert);
  • lessThan(Eigenschaft, Wert);
  • lessThanOrEqual(Eigenschaft, Wert);
  • greaterThan(Eigenschaft, Wert);
  • greaterThanOrEqual(Eigenschaft, Wert);

Mehrere Bedingungen in eine Abfrage packen
Mittels logicalAnd, logicalOr und logicalNot können wir mehrere Bedingungen zusammensetzen.

  • logicalAnd(Bedingung1, Bedingung2);
  • logicalOr(Bedingung1, Bedingung2);
  • logicalNot(Bedingung);
    $query->logicalAnd(
      $query->equals('done', false),
      $query->lessThan('duedate', $duedate),
    )

Weitere Beispiele:

Hast du einen Fehler gefunden? Schreibe an: http://www.extbasefluid.com/anfrage/
comments powered by Disqus