繁体   English   中英

Typo3,如何获取从查询对象创建的MySQL查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM