Gewusst wie: Debuggen eine Abfrage in extbase?
$query = $this->createQuery();
return $query->matching($query->like('linker', "$linkerKey=$linkerValue"))
->setOrderings(array('crdate' => $ordering))
->execute();
Wie kann ich Debuggen, wie eine generierte Abfrage in extbase? Beim erstellen der Abfrage erneut (aber ohne die execute() ) und zu versuchen, um es anzuzeigen mit var_dump oder die interne t3lib_div::debug ich nur eine leere Seite.
InformationsquelleAutor pduersteler | 2011-02-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Siehe api.typo3.org/typo3cms/47/html/...
Erweitern: Sie können auch zuweisen
1
(gleiche wietrue
fürdisplay queries with errors
) oder2
(fürdisplay all queries
).$GLOBALS['TYPO3_DB']->debugOutput = 2;
NICHT funktioniert... ich verstehe nicht, warum es ist solch ein Aufwand zu aktivieren Sie die Ausgabe von sql-Abfragen...$GLOBALS['TYPO3_DB']->Debugger = 2; funktioniert bei mir...
InformationsquelleAutor xandi
In der version 8.7 LTS, ein anderer Weg genommen werden muss:
Warum ist das nicht direkt eingebaut in die DebuggerUtility?!
Danke. Diese Linien werden heilig für mich.
InformationsquelleAutor pgampe
Diese information ist veraltet und deprecated in TYPO3 8.7. Siehe @pgampe 's Antwort weiter unten für eine neuere Möglichkeit zum Debuggen von extbase Abfragen.
Extbase hat nun ein QueryParser. In Ihrem repository-Methode, rechts vor der Rückgabe der ausgeführten query, insert:
Das Ergebnis ist eine Tabelle, Ansicht der Abfrage Teile, geteilt durch SQL-Schlüsselwörter, z.B.:
Beachten Sie, dass das QueryResult, dass Ihre Repository-gibt vielleicht noch andere aus der SQL-Abfrage Ergebnis. Extbase nutzt die PropertyMapper, um zu versuchen, zu konvertieren jede Ergebniszeile in ein ExtbaseObject. Wenn der PropertyMapper ist falsch konfiguriert oder die Zeile Daten enthält, die nicht konvertiert werden, um die Datentypen entsprechend der Konfiguration dieser Objekte wird stillschweigend übersprungen werden.
Call to undefined method TYPO3\CMS\Extbase\Persistence\Generic\Storage\Typo3DbQueryParser::parseQuery()
@Pgampe wies darauf hin, diese Methode ist veraltet. Siehe seine Antwort für ein update.
O. K jetzt Debuggen einer Abfrage, die generiert wird, in einer der core-Dateien wie dieses: $this->xyRepository->add($xyObject);
InformationsquelleAutor j4k3
Diesen hack zu extbase ist schmutzig, aber nützlich:
In typo3/sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php
Bearbeiten Sie die Methode buildQuery(array $sql)
vor der return-Anweisung hinzufügen:
Entfernen nach Gebrauch, und vergessen Sie nicht, dies hat Einfluss auf alles, was läuft auf extbase zu verwenden, so in der dev-Umgebung nur
Quelle: http://sancer-media.net/2011/extbase-schneller-mysql-debug.html
stimmt, danke!
Hinweis: in TYPO3 6.1 ist dies am typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php - aber der hack funktioniert nicht mehr
Siehe @biesior Antwort auf stackoverflow.com/questions/13084863/... für 6.1 - Werke
InformationsquelleAutor Urs
In v6.2x oder höher, können Sie debug-Objekt in extBase wie:
Im repository:
Oder Sie können auch debug-Objekt im Controller:
InformationsquelleAutor Ghanshyam Gohel
Dies funktioniert so lange, wie $GLOBALS['TYPO3_DB'] unterstützt wird.
Es wird Ihnen zeigen, das komplette erstellen von SQL-Abfrage.
Also mit dieser Funktion können Sie etwas tun, wie dieses in Ihrem controller:
InformationsquelleAutor simplychrislike
Einfache Weise, ohne dass änderungen am Typo3 core code und nicht erwähnt, in jedem forum, so weit ist es mit Hilfe der php "serialize ()" - Methode:
In der Ergebnis-Objekt finden Sie die SQL-Abfrage (siehe "Anweisung;" ...)
InformationsquelleAutor Benno