String Functions im Query

  • ArminB ArminB
    Jedi-Meister
    0 x
    410 Beiträge
    0 Hilfreiche Beiträge
    27. 10. 2011, 16:38

    Hallo,

    wie kann man es am einfachsten bewerkstelligen in einem Query auch String Functions (REPLACE, etc.pp, http://dev.mysql.com/doc/refman/5.1/en/string-functions.html) einzubinden. Über den Tx_Extbase_Persistence_Query sehe ich keine Möglichkeit. Um die Sortierung weiter beeinflussen zu können bin ich schon über Tx_Extbase_Persistence_Storage_Typo3DbBackend gegangen.

    Danke und Gruß
    Armin


  • 1
  • freshman17 freshman1...
    Sternenflotten-Admiral
    0 x
    218 Beiträge
    2 Hilfreiche Beiträge
    27. 10. 2011, 23:58

    http://www.typo3.net/forum/beitraege/extbase_und_fluid/105657/
    siehe dort meine erste Antwort.

  • ArminB ArminB
    Jedi-Meister
    0 x
    410 Beiträge
    0 Hilfreiche Beiträge
    31. 10. 2011, 12:32

    Hallo,

    Danke für deine Antwort.

    Den Weg über statement($sql) bin ich schon gegangen.
    Meine Schritte im Groben:

    1. $backend = $this->objectManager->get('Tx_Extbase_Persistence_Storage_Typo3DbBackend');
    2. $parameters = array();
    3. $statementParts = $backend->parseQuery($query, $parameters);
    4. $statementParts['additionalWhereClause']['55'] = " REPLACE(tx_iwproduct_domain_model_product.artikelnr, '-', '') LIKE '%vv9%'";
    5. $statement = $backend->buildQuery($statementParts);
    6. $query->statement($statement, $parameters);

    Das klappt auch, mir ist nun ein komischer Fehler aufgefallen. Wenn ich mit count() Abfrage wieviele Datensätze vorhanden sind wird eine Zahl (z.B. 51) ausgegeben, obwohl 0 zurückgegeben werden müsste! Die f:for om ViewHelper wird auch nicht ausgeführt!
    Binde ich nun das zusätzlich ein:
    1. $productAllExecute = $query->execute();
    2. foreach ($productAllExecute as $productAllExecuteValue) {
    3. }
    wird mir bei count() auch 0 zurückgegeben wenn 0 vorhanden ist!
    Armin

  • 1