[英]Typo3, How can I get the MySQL query created from the query object
我是Typo3的新手。 我正在使用6.1版本。
我需要显示从查询对象生成的MySQL查询。 请让我知道我该怎么做?
下面是我的存储库类中的代码片段。
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(false);
$query->matching(
$query->equals('id',intval($id))
);
return $query->execute();
我需要在执行并返回查询结果之前显示MySQL查询。
请让我知道我该怎么做。
提前致谢。
在extbase它很难显示上次查询。
您可以尝试使用普通的TYPO3方式,但是必须先执行查询,然后才能执行此操作:
$GLOBALS['TYPO3_DB']->store_lastBuiltQuery = 1;
//query
// the complete SQL-Statement
echo $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
另一种方法是在return statement
之前进入buildQuery(array $sql)
并添加以下代码段:
if (in_array("your_table_name", $sql['tables'])) {
var_dump($statement);
print_r($statement);
}
您可以在此处找到buildQuery方法:
TYPO3 ver.: 4.x: typo3/sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php
TYPO3 ver.: 6.x: typo3/sysext/extbase/Classes/Persistence/Generic/Storage/Typo3DbBackend.php
编辑:一种非常好的方法是仅将列名拼写错误。 例如:列称为test
,将其称为testsdffq
。 查询将失败,它将向您显示整个查询。
可能会有所帮助。
确保在localconf.php中设置了以下内容:
$TYPO3_CONF_VARS['SYS']['sqlDebug'] = '1';
$TYPO3_CONF_VARS['FE']['debug'] = '1';
尝试
$res = $GLOBALS['TYPO3_DB']->SELECTquery('*', 'tx_xmluploader_xml_import_tree', 'xml_import_id='.$xml_import_id);
t3lib_div::debug($res);
结果将在前端输出查询。 然后,您可以在MySQL中执行它以进行调试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.