Jak zalogować zapytanie SQL do kolekcji?

9

Chcę zalogować zapytanie SQL dla kolekcji niestandardowej. Wypróbowałem następujący kod. Ale nie działało. Wszelkie sugestie będą mile widziane.

Mage::log($collection->getSelect(),null,'test.log',true);
Sukeshini
źródło

Odpowiedzi:

10

Jeśli chcesz zapytanie SQL z kolekcji, musisz rzucić go jako ciąg. Po prostu dodaj (string)do wcześniej napisanego kodu logowania.

Mage::log((string)$collection->getSelect(),null,'test.log',true);
Sander Mangel
źródło
12

Wypróbuj $Collection->printLogQuery(true);to wydrukuje kwerendę kolekcji.

Mufaddal
źródło
Dziękuję Ci bardzo. Twój kod drukuje zapytanie do interfejsu.
Sukeshini,
2

Jak wyjaśnił mi Flyingmana, dzięki niemu.

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

Ważne jest, aby zalogować lub wydrukować zapytanie po załadowaniu, ponieważ w beforeLoadmetodzie można wiele rzeczy zrobić. Pierwsza odpowiedź:

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

powinien być użyty PO loadwywołaniu.

Fabian Blechschmidt
źródło
Jak uzyskać bieżące zdarzenie i wydrukować do pliku dziennika w Magento 1.9
Gem
Nie dostaję pytania. Co za wydarzenie?
Fabian Blechschmidt
2

Krok 1:

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

Krok 2: Po tym zaloguj się do sekcji administracyjnej Magento i włącz logowanie ustawień. Patrz poniżej .

System> Konfiguracja> Deweloper> Ustawienia dziennika

Krok 3: Następnie zobacz plik dziennika „custom_collection.log” w folderze var / log /.

Dharmendra
źródło
1
Mage::log($collection->getSelect()->__toString(), Zend_Log::DEBUG, 'test.log', true);

Edytować:

Zamiast używać null(powrót do DEBUG) jako drugiego parametru lepiej użyć jednego z tych z 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
sv3n
źródło