[Frage] Falsches Ergebnis vom Repository? [Gelöst]

  • 9pm 9pm
    T3PO
    0 x
    23 Beiträge
    0 Hilfreiche Beiträge
    15. 08. 2013, 14:41

    Hallo zusammen!

    Ich habe ein Problem was meine Query-Results betrifft. Und zwar bekomme ich scheinbar keine gescheiten Ergebnisse zurück. Normalerweise ist es doch so, dass wenn nur ein Datensatz gefunden wird, ich diesen direkt zurück geliefert bekomme, oder? Also als Objekt vom Typ meineExt\Domain\Model\FooBar. Mache ich ein toArray() darauf, erhalte ich ihn als Array. Gibt es mehrere Ergebnisse erhalte ich ein Objekt vom Typ QueryResult zurück über das ich z.b. auch iterieren kann. Wenn ich darauf wiederum ein toArray() mache, erhalte ich ein Array wo alle meine Datensätze als Objekte drin stehen.

    Bei mir ist es nun so, dass ich eigentlich nur einen Datensatz zurück bekommen sollte. Aber ich erhalte ein Objekt vom Typ QueryResult. Ich kann weder drüber iterieren, noch ein toArray() drauf machen.

    Leider kann ich nicht genau sagen welcher Fehler auftritt, da ich mit TYPO3 und InDesign/Comet arbeite. Lange Rede gar kein Sinn: das bedeutet, sobald ein Fehler auftritt erhalte ich in InDesign eine Fehlermeldung. In dieser steht nicht viel drin, nur dass kein Ergebnis zurück geliefert wurde.

    Ich arbeite mit IntelliJ und kann trotz Allem per XDebug debuggen. Wenn ich debugge, mir mein Result zur Laufzeit anschaue und ein toArray() drauf mache, erhalte ich 'error evaluating code'. Mache ich das ganze noch einmal, klappt es (aber nur beim Debuggen). Füge ich direkt im Code $result->toArray(); ein, schmiert mir meine Programmierung ab.

    setReturnRawQueryResult steht auf FALSE und auch sonst wird alles korrekt aufgebaut. Bevor Fragen auftauchen warum ich nicht einfach mit dem Array arbeite: ich brauche das Ergebnis als Objekt, damit ich darauf ein getImages() machen kann. Diese hängen nämlich als ValueObjects an meinem Objekt.

    Ich hoffe dass mir jemand weiter helfen kann oder erzählt dass er dieses Problem kennt. Ich bin mit meinem Latein am Ende... ):

  • 9pm 9pm
    T3PO
    0 x
    23 Beiträge
    0 Hilfreiche Beiträge
    23. 08. 2013, 15:45 - Lösung

    Hey, danke für Eure Antworten.

    Ja, toArray() oder die Einstellung setReturnRawQueryResult mag ich selber nicht. Aber ich bin nicht der Einzige der am Projekt arbeitet, und das alles wieder rückgängig machen wäre recht aufwendig.

    Ich habe das Problem nun auch endlich gefunden. Es lag doofer Weise am Anwender ... nämlich mir. Ich habe zuvor eine Klasse kopiert, wurde zwischendurch unterbrochen und habe nicht mehr dran gedacht die Klasse umzubenennen. Demnach gab es zwei mal dieselbe Klasse und Extbase hat mir nur Müll zurück geliefert. Nachdem ich das korrigiert habe, bekam ich endlich wieder ein "gescheites" Resultset zurück.

    Trotzdem Danke ;)
    Viele Grüße


  • 1
  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    22. 08. 2013, 13:56

    Im Prinzip kann das alles sein. Aber so weit ich mich erinnere, bekommt man immer ein QueryResult zurück - unabhängig ob nur ein Treffer oder mehrere (außer du nutzt setLimit(1)).

    Die Frage ist vermutlich eher, warum findet deine Suchanfrage/Filter nicht richtig. Aber hier müsste ich spekulieren.

    Generell würde ich Abstand von toArray() oder setReturnRawQueryResult nehmen außer es gibt zwingende Gründe.

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • kitsunet kitsunet
    Flash Gordon
    0 x
    2559 Beiträge
    27 Hilfreiche Beiträge
    22. 08. 2013, 21:05

    Ja, es gibt immer ein QueryResult, aber Du kannst auf das QueryResult ein getFirst() machen und erhälst dann ein einzelnes Ergebnis.

    config.baseURL = http://www.kitsunet.com/
    TYPO3 Flow und Neos Community Contact
    Release Manager TYPO3 Neos 1.1
    Ich habe Probleme mit den PMs hier, also schreibt mir bitte eine Mail oder über Twitter!

  • 9pm 9pm
    T3PO
    0 x
    23 Beiträge
    0 Hilfreiche Beiträge
    23. 08. 2013, 15:45

    Hey, danke für Eure Antworten.

    Ja, toArray() oder die Einstellung setReturnRawQueryResult mag ich selber nicht. Aber ich bin nicht der Einzige der am Projekt arbeitet, und das alles wieder rückgängig machen wäre recht aufwendig.

    Ich habe das Problem nun auch endlich gefunden. Es lag doofer Weise am Anwender ... nämlich mir. Ich habe zuvor eine Klasse kopiert, wurde zwischendurch unterbrochen und habe nicht mehr dran gedacht die Klasse umzubenennen. Demnach gab es zwei mal dieselbe Klasse und Extbase hat mir nur Müll zurück geliefert. Nachdem ich das korrigiert habe, bekam ich endlich wieder ein "gescheites" Resultset zurück.

    Trotzdem Danke ;)
    Viele Grüße

  • 1