Typo3,如何从查询对象中获取MySQL查询

时间:2014-09-10 07:16:43

标签: php mysql typo3-6.1.x

我是Typo3的新手。我正在使用6.1版本。

我需要显示从查询对象生成的MySQL查询。请让我知道我该怎么做?

以下是我的存储库类中的代码段。

$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(false);
$query->matching(
    $query->equals('id',intval($id))
);

return $query->execute();

我需要在执行并返回查询结果之前显示MySQL查询。

请让我知道我该怎么做。

提前致谢。

2 个答案:

答案 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中执行它以进行调试。