Extbase Repository statement und DISTINCT [Gelöst]

  • Jan.S Jan.S
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    18. 09. 2012, 08:31

    Hallo,
    ich habe ein Problem gefunden welches ich nicht ganz nachvollziehen kann.
    Wenn ich ein SELECT Statement selber schreibe und auf einen Feld ein DISTINCT lege, dann wird es von Extbase ignoriert. Lasse ich mir die generierte Query ausgeben sieht das ungefähr so aus.

    Meine Abfrage:

    1. SELECT DISTINCT name ..... FROM

    Extbase macht folgendes drauß:

    1. SELECT tabellen_name.* FROM .....

    Es sieht so aus als ob extbase alle Felder bracht um sich das entsprechende Objekt wieder zusammen zu bauen. Heißt es das es nicht möglich beim erstellen des Objektes ein DISTINCT zu benutzt?

    Ich weiß das man mit folgender Anweisung das Erzeugen des extbase Objekte unterbinden kann. Wenn man das macht, dann funktioniert auch das DISTINCT, aber das kann doch so nicht im sinne des Erfinders sein oder? :o

    1. $query->getQuerySettings()->setReturnRawQueryResult(TRUE);

    Gruß Jan


  • 1
  • rlp_immigrant rlp_immig...
    Padawan
    0 x
    58 Beiträge
    0 Hilfreiche Beiträge
    21. 09. 2012, 10:00

    [quote="Jan.S"]
    Wenn ich ein SELECT Statement selber schreibe und auf einen Feld ein DISTINCT lege
    [/quote]

    Du kannst ein Distinct nicht auf ein Feld legen. Ein Distinct verhindert doppelte Datensätze. Was Du suchst ist GROUP BY ...

    Da dein Ergebnis keine gleichen Datensätze zurück liefern kann macht dein Distinct keinen Sinn und Extbase schmeißt es gleich raus.

    Warum kann deine Abfrage keine doppelten Datensätze liefert? - Weil dann der Objectmapper ein Problem hätte. Er kann nur unterschiedliche Objekte von unterschiedlichen Datensätzen erstellen.

    Daher bleibt dein Distinct auch drin wenn du

    1. $query->getQuerySettings()->setReturnRawQueryResult(TRUE);

    benutzt, denn dann wird der Objectmapper nicht verwendet.

    Lange Rede kurzer Sinn:

    Wenn dein Abfrage doppelte Datensätze liefert schmeißt Extbase diese von alleine raus.
    Wenn du deine Datensätze gruppieren willst, nimm group by

    Grüße
    Alex

  • Jan.S Jan.S
    Padawan
    0 x
    38 Beiträge
    0 Hilfreiche Beiträge
    26. 09. 2012, 09:14

    Danke das war genau das was ich gesucht habe. :o
    Jetzt kann ich auch wieder mit dem richtigen Objekten arbeiten.

    Perfekt :)

    :p

  • 1