2014-09-10 4 views
1

저는 Typo3을 처음 사용합니다. 나는 그것의 6.1 버전을 사용하고있다.Typo3, 쿼리 개체에서 생성 된 MySQL 쿼리를 어떻게 얻을 수 있습니까?

쿼리 개체에서 생성 된 MySQL 쿼리를 표시해야합니다. 제가 어떻게 할 수 있는지 알려주세요.

다음은 내 저장소 클래스에있는 코드 조각입니다.

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

return $query->execute(); 

쿼리 결과를 실행하고 반환하기 전에 MySQL 쿼리를 표시해야합니다.

내가 어떻게 할 수 있는지 알려 주시기 바랍니다.

미리 감사드립니다.

+0

디버깅 용도로만 사용 하시겠습니까? – Xatenev

+0

@ Xatenev, yes 예상되는 출력을 표시하지 않기 때문에 내 쿼리에서 어떤 문제가 있는지 확인하고 싶습니다. –

+0

가능한 중복 [Extbase - 쿼리에서 만든 sql] (http://stackoverflow.com/questions/13084863/extbase-get-created-sql-from-query) – biesior

답변

1

내선 매우 마지막 쿼리를 표시하기 어렵습니다.

당신은 정상 TYPO3 방법을 시도 할 수 있습니다,하지만 당신은 당신이 할 수 있습니다 전에 쿼리를 실행해야합니다 :

또 다른 방법은 바로 return statement 전에 buildQuery(array $sql)로 가서이 코드를 추가하는 것입니다
$GLOBALS['TYPO3_DB']->store_lastBuiltQuery = 1; 

//query 

// the complete SQL-Statement 
echo $GLOBALS['TYPO3_DB']->debug_lastBuiltQuery; 

:

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이라고합니다. 쿼리가 실패하고 전체 쿼리가 표시됩니다.

+0

이 방법을 구현하지 못했습니다. 정교하게 주시겠습니까? –

+0

두 번째 방법을 구현하려고했습니다. 핵심 라이브러리 파일에이 파일을 구현 한 다음 디버깅 권한으로 완성한 후에 제거하려고 했습니까? 이것이 내가 한 일이다. –

+0

정확히 @KrishDamani 네. 쿼리가 거기에 내장되어 있기 때문에 코어에 넣어야합니다.다른 일이 생기기 전에 원시 쿼리를 얻어야합니다. :) – Xatenev

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에서 실행할 수 있습니다.

+0

변수'$ xml_import_id'에 대한 값을 어떻게 얻을 수 있습니까? –