컬렉션의 SQL 쿼리를 기록하는 방법은 무엇입니까?


9

사용자 지정 컬렉션에 대한 SQL 쿼리를 기록하고 싶습니다. 다음 코드를 시도했습니다. 그러나 작동하지 않았다. 모든 제안을 부탁드립니다.

Mage::log($collection->getSelect(),null,'test.log',true);

답변:


10

컬렉션의 SQL 쿼리를 원한다면 문자열로 캐스팅해야합니다. (string)이전에 작성된 로깅 코드에 추가 하십시오.

Mage::log((string)$collection->getSelect(),null,'test.log',true);

12

사용 해보세요 $Collection->printLogQuery(true);수집 쿼리를 인쇄합니다이.


대단히 감사합니다. 코드는 쿼리를 인터페이스에 인쇄합니다.
Sukeshini

2

Flyingmana가 나에게 설명했듯이, 그 덕분에.

$collection->load($printQuery = false, $logQuery = false)

beforeLoad메소드 에서 많은 작업을 수행 할 수 있으므로로드 후 쿼리를 로그하거나 인쇄하는 것이 중요합니다 . 첫 번째 답변은

Mage::log((string)$collection->getSelect(),null,'test.log',true);

load호출 한 후에 사용해야합니다 .


현재 이벤트를 가져 와서 Magento 1.9에서 로그 파일로 인쇄하는 방법
Gem

질문이 없습니다. 무슨 행사?
Fabian Blechschmidt

2

1 단계:

$result_colletion = print_r($collection->getSelect());
Mage::log($$result_colletion, null, custom_collection.log,true);

2 단계 : 그 후 Magento admin 섹션에 로그인하고 로그 설정을 활성화합니다. 아래를 참조하십시오 .

시스템> 구성> 개발자> 로그 설정

3 단계 : 그 후에 var / log / folder의“custom_collection.log”로그 파일을보십시오.


1
Mage::log($collection->getSelect()->__toString(), Zend_Log::DEBUG, 'test.log', true);

편집하다:

두 번째 매개 변수로 null(fallback to DEBUG) 를 사용하는 대신 다음 중 하나를 사용하는 것이 좋습니다 Zend_Log.

const EMERG   = 0;  // Emergency: system is unusable
const ALERT   = 1;  // Alert: action must be taken immediately
const CRIT    = 2;  // Critical: critical conditions
const ERR     = 3;  // Error: error conditions
const WARN    = 4;  // Warning: warning conditions
const NOTICE  = 5;  // Notice: normal but significant condition
const INFO    = 6;  // Informational: informational messages
const DEBUG   = 7;  // Debug: debug messages
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.