Extbase mit SQL Debug?

  • typonewbe typonewbe
    Sternenflotten-Admiral
    0 x
    197 Beiträge
    3 Hilfreiche Beiträge
    13. 04. 2011, 10:57

    Hallo,
    im Moment habe ich noch ein paar Probleme die Query Funktionen richtig zu interpretieren. Daher wollte ich mir mal die Querys nach dem zusammensetzen ansehen und schauen ob die so sind wie ich die mir vorstelle. Leider klappt das nicht so wie ich es will eventuell hat ja jemand ne Idee.

    Meine Testanweisung lautet so:

    1. $query = $this->createQuery();
    2. $query->matching(
    3. $query->logicalAnd(
    4. $query->equals('uid', $id),
    5. $query->logicalOr(
    6. $query->equals('spalte1', NULL),
    7. $query->equals('spalte1', '')
    8. )
    9. )
    10. );
    11. $result = $query->execute();
    12. //Hier mal ins devlog schreiben
    13. $GLOBALS['TYPO3_DB']->store_lastBuiltQuery = true;
    14. $GLOBALS['TYPO3_DB']->debugOutput = true;
    15. t3lib_div::devlog('--- SQL-Query: '.$GLOBALS['TYPO3_DB']->debug_lastBuiltQuery.' ---', 'gravis_contact', 0);
    16. return $result;

    Leider passiert garnix zwar wird ein Ergebnis zurückgegeben das devlog bleibt aber leer.

    Kann mir jemand einen Tipp geben wie ch mir die zusammengesetze Query anzeigen lassen kann?

    Danke schon mal im Voraus

    Gruß typonewbe


  • 1
  • xandio xandio
    Padawan
    0 x
    40 Beiträge
    0 Hilfreiche Beiträge
    16. 04. 2011, 11:55

    Hallo!

    Eigenartig, bei mir (TYPO3 4.5) funktioniert die Debug-Ausgabe, wenn ich den folgenden Wert setze:

    1. $GLOBALS['TYPO3_DB']->debugOutput = true;

    1. $GLOBALS['TYPO3_DB']->debug_lastBuilt
    liefert allerdings nichts zurück, obwohl
    1. $GLOBALS['TYPO3_DB']->store_lastBuiltQuery
    und
    1. [SYS][enable_DLOG]
    gesetzt sind.

    Viele Grüße,
    Xandi

  • typonewbe typonewbe
    Sternenflotten-Admiral
    0 x
    197 Beiträge
    3 Hilfreiche Beiträge
    20. 04. 2011, 13:39

    Hallo xandio,

    jupp klappt irgendwie noch nicht richtig. Hab nach anfänglicher euphorie aber wieder etwas Boden gefasst was die ganze query Geschichte in Extbase angeht hab festgestellt, dass man halt sobald auch nur etwas mehr Anforderungen wie selber festlegen welche Felder genommen werden bzw. neue Felder in der Abfrage hinzuzufügen wie SELECT if(feldxy>0,1,0) AS neuesFeld ... man auf query->statement zurückgreifen muss und meiner Meinung nach das ganze Konzept was dahinter steht mehr oder weniger aushebelt.

    Natürlich würd ich mir meine eigene query Funktion schreiben aber hab noch nicht herausbekommen wie das so funktioniert das ansehen dieser abstrakten funktionen hat mich eher noch mehr verwirrt als geholfen.

    Bringt uns bei unserem Problem auch nicht wirklich weiter, aber beim Statement weiß ich wenigstens was ich geschrieben habe und kann im Notfall über mysql meine Anweisung überprüfen.

    :(
    PS: Für Infos sind wir auch wieder Dankbar :)

    Gruß typonewbe

  • 0 x
    24 Beiträge
    0 Hilfreiche Beiträge
    30. 09. 2011, 15:38

    Habt Ihr hierzu eine Lösung gefunden? Hab das selbe Problem und krieg keine Ausgabe des SQL-Befehls.

    Gruß Dirk

  • sunfish sunfish
    Padawan
    0 x
    53 Beiträge
    0 Hilfreiche Beiträge
    12. 01. 2012, 12:32

    Hallo,
    eine praktische Möglichkeit ist hier beschrieben: [url=http://snipplr.com/view/55225/]snipplr.com/view/55225/[/url].

    Man schreibt den "If-Schnipsel" in typo3\sysext\extbase\Classes\Persistence\Storage\Typo3DbBackend.php in die Methode "buildQuery". Mit your_table_name kann man auswählen, von welcher Tabelle die Queries ausgegeben werden.Eine solche Einschränkung macht es deutlich übersichtlicher. Gibt man die Info mit firePHP aus, dann wird der Ablauf nicht gestört [also FB::send($statement)].

    1. if (in_array("your_table_name", $sql['tables'])) {
    2. print_r($statement);
    3. }

  • bennof bennof
    TYPO3-Anwärter
    0 x
    5 Beiträge
    1 Hilfreiche Beiträge
    08. 11. 2014, 17:27

    Eine einfache Lösung ohne Ändern von Typo3 core code und bisher in keinem Forum gefunden, habe ich soeben auf http://stackoverflow.com/questions/5075296/how-to-debug-a-query-in-extbase/26817312#26817312 gepostet, hier nochmal auf deutsch: Die Nutzung der PHP-Funktion serialize()

    1. $result = $query->execute();
    2. echo (serialize($result));

    Im result objekt findest du auch die SQL query versteckt (siehe "statement;" ...)

  • 1