Zwei Techniken zum debuggen von TYPO3 6.x DB queries:
1. Constraints "sammeln" und ausgeben:
Beim zusammenstellen der Query die Constraints folgendermassen festhalten:
$constraints[] = $query->logicalAnd($searchConstraints);
...
Und abschliessend ausgeben:
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($constraints);
2. SQL Query ausgeben:
/**
* Debugs a SQL query from a QueryResult
*
* @param \TYPO3\CMS\Extbase\Persistence\Generic\QueryResult $queryResult
* @param boolean $explainOutput
* @return void
*/
public function debugQuery(\TYPO3\CMS\Extbase\Persistence\Generic\QueryResult $queryResult, $explainOutput = FALSE) {
$GLOBALS['TYPO3_DB']->debugOuput = 2;
if ($explainOutput) {
$GLOBALS['TYPO3_DB']->explainOutput = true;
}
$GLOBALS['TYPO3_DB']->store_lastBuiltQuery = true;
$queryResult->toArray();
DebuggerUtility::var_dump($GLOBALS['TYPO3_DB']->debug_lastBuiltQuery);
$GLOBALS['TYPO3_DB']->store_lastBuiltQuery = false;
$GLOBALS['TYPO3_DB']->explainOutput = false;
$GLOBALS['TYPO3_DB']->debugOuput = false;
}
...und dann zur Ausgabe z.B.:
$events = $this->eventRepository->findDemanded($demand, $limit); $this->debugQuery($events);
Quelle:
http://blog.undkonsorten.com/sql-queries-debuggen-in-typo3
Hilft Dir bei Deiner Arbeit. Zeigt Dir das was nicht im Handbuch steht. Loest unloesbare Probleme. Das Schweizer Taschenmesser und die milchgebende Eier-Sau im Wollpelz in Sachen TYPO3.
Showing posts with label datenbank. Show all posts
Showing posts with label datenbank. Show all posts
Sunday, April 19, 2015
Wednesday, February 26, 2014
Wie kann ich PHP TYPO3-Datenbank-Abfragen debuggen?
(fuer TYPO3 <= 4.7 ?)
Hier ein kurzes Beispiel:
$GLOBALS['TYPO3_DB']->debugOutput = true;
$GLOBALS['TYPO3_DB']->store_lastBuiltQuery = true;
$res = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
...
);
echo $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
Extbase SQL Queries ausgeben
(fuer TYPO3 >= 6.0 ?)
Quelle:
http://www.in2code.de/community/snippet-datenbank/snippets/detail/extbase-sql-queries-debuggen/
Extbase SQL Queries werden in der Datei...
typo3\sysext\extbase\Classes\Persistence\Storage\Typo3DbBackend.php
...in der Methode "buildQuery" erstellt. Hier koennen diese ausgegeben werden.
Um nicht jede Query (gesamter Seitenaufbau) auszugeben kann die gewuenschte Tabelle herausgefiltert werden:
Quelle:
http://www.in2code.de/community/snippet-datenbank/snippets/detail/extbase-sql-queries-debuggen/
Extbase SQL Queries werden in der Datei...
typo3\sysext\extbase\Classes\Persistence\Storage\Typo3DbBackend.php
...in der Methode "buildQuery" erstellt. Hier koennen diese ausgegeben werden.
Um nicht jede Query (gesamter Seitenaufbau) auszugeben kann die gewuenschte Tabelle herausgefiltert werden:
if (in_array("table_name", $sql['tables'])) {
echo $statement;
}
Subscribe to:
Posts (Atom)