我是Typo3的新手。我正在使用6.1版本。
我需要显示从查询对象生成的MySQL查询。请让我知道我该怎么做?
以下是我的存储库类中的代码段。
$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(false);
$query->matching(
$query->equals('id',intval($id))
);
return $query->execute();
我需要在执行并返回查询结果之前显示MySQL查询。
请让我知道我该怎么做。
提前致谢。
答案 0 :(得分:2)
在extbase中非常很难显示最后一个查询。
您可以尝试正常的TYPO3方式,但必须先执行查询才能执行此操作:
$GLOBALS['TYPO3_DB']->store_lastBuiltQuery = 1;
//query
// the complete SQL-Statement
echo $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery;
另一种方法是在buildQuery(array $sql)
之前进入return statement
并添加此代码段:
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
。查询将失败,它将显示整个查询。
答案 1 :(得分:0)
可能会有所帮助。
确保在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中执行它以进行调试。