문제

우리는 Symfony 1.0을 사용합니다. Propel Objects와의 모듈 작업이 있습니다. SQL- 쿼리는 "DB"메뉴의 Symfony-Debugbar에서 볼 수 있습니다.

내 문제는 또한 propel :: getrs ( "select ...")를 통해 사용자 정의 SQL-Querys를 사용한다는 것입니다.이 쿼리는 디버그 막대에서 보이지 않습니다.

누구든지 어떻게 해야하는지 아이디어가 있습니까?

도움이 되었습니까?

해결책

추천 방법

Symfony의 표준 로거는 권장되는 방법입니다.

행동 내에서 :

$this->logMessage('executed SQL: '.$sql);

모델 내부 (또는 다른 곳)에서 :

sfContext::getInstance()->getLogger()->info('executed SQL: '.$sql);

이 메소드는 실행 체인의 올바른 위치에서 디버그 도구 모음의 'Logs & Msgs'탭에 SQL 쿼리를 삽입합니다.

하지만, 당신이 단지 쿼리를보고 싶다면 맨 위 'logs & msgs'탭의 탭에서 영구 로그에 저장 될 필요가 없다면 사용할 수 있습니다. $this->debugMessage($sql); 대신, 쿼리를 함께 볼 수 있고 로그 실행 체인을 통해 쿼리를 검색 할 수 없습니다.

잠재적으로 바람직한 방법

이 SQL 쿼리가 대신 'DB'탭에 나타나기를 원할 것 같습니다. 이것은 Symfony가 직접 지원하지는 않지만 대신이 솔루션을 '해킹'할 수 있습니다.

행동 내에서 :

$this->logMessage(sprintf("{sfCreole} executeQuery(): [x.xx ms] %s", $sql));

모델 내부에서 :

sfContext::getInstance()->getLogger()->info(sprintf("{sfCreole} executeQuery(): [x.xx ms] %s", $sql));

이것은 SQL 쿼리를 로깅하기 위해 Symfony에서 디버그 옵션의 동작을 모방하므로 사용자 정의 SQL 쿼리를 디버그 도구 모음의 'DB'탭으로 푸시합니다. 나는 당신이 원한다면 타이밍 [x.xx ms] 옵션을 당신에게 구현하기 위해 당신에게 남겨 둡니다 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top