Zum Inhalt springen

Extbase mit SQL Debug?

Erstellt am 13. April 2011 · 5 Antworten · letzte Antwort am 8. November 2014

Tags: Frage

typonewbe ·

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:

$query = $this->createQuery();
		$query->matching(
			$query->logicalAnd(
				$query->equals('uid', $id),
				$query->logicalOr(
					$query->equals('spalte1', NULL),
					$query->equals('spalte1', '')
				)
			)
		);
$result = $query->execute();
//Hier mal ins devlog schreiben
$GLOBALS['TYPO3_DB']->store_lastBuiltQuery = true;
$GLOBALS['TYPO3_DB']->debugOutput = true;
t3lib_div::devlog('--- SQL-Query: '.$GLOBALS['TYPO3_DB']->debug_lastBuiltQuery.' ---', 'gravis_contact', 0);
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

xandio ·

Hallo!

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

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

liefert allerdings nichts zurück, obwohl

$GLOBALS['TYPO3_DB']->store_lastBuiltQuery

und

[SYS][enable_DLOG]

gesetzt sind.

Viele Grüße,
Xandi

typonewbe ·

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

sunfish ·

Hallo,
eine praktische Möglichkeit ist hier beschrieben: snipplr.com/view/55225/.

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)].

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