ฉันต้องการบันทึกแบบสอบถาม SQL สำหรับคอลเลกชันที่กำหนดเอง ฉันลองรหัสต่อไปนี้ แต่ไม่ได้ผล ข้อเสนอแนะใด ๆ จะได้รับการชื่นชม
Mage::log($collection->getSelect(),null,'test.log',true);
ฉันต้องการบันทึกแบบสอบถาม SQL สำหรับคอลเลกชันที่กำหนดเอง ฉันลองรหัสต่อไปนี้ แต่ไม่ได้ผล ข้อเสนอแนะใด ๆ จะได้รับการชื่นชม
Mage::log($collection->getSelect(),null,'test.log',true);
คำตอบ:
ถ้าคุณต้องการคิวรี่ SQL จากคอลเลกชันคุณต้องแปลงมันเป็นสตริง เพียงเพิ่ม(string)
รหัสการบันทึกก่อนหน้านี้ของคุณ
Mage::log((string)$collection->getSelect(),null,'test.log',true);
ลองใช้$Collection->printLogQuery(true);
วิธีนี้จะพิมพ์ข้อความค้นหาคอลเลกชัน
อย่างที่ Flyingmana อธิบายให้ฉันขอบคุณเขา
$collection->load($printQuery = false, $logQuery = false)
มันเป็นสิ่งสำคัญที่จะเข้าสู่ระบบหรือพิมพ์แบบสอบถามหลังจากการโหลดเพราะในbeforeLoad
วิธีการที่สามารถทำได้หลายสิ่ง ดังนั้นคำตอบแรก:
Mage::log((string)$collection->getSelect(),null,'test.log',true);
ควรใช้หลังจากload
เรียกว่า
ขั้นตอนที่ 1:
$result_colletion = print_r($collection->getSelect());
Mage::log($$result_colletion, null, custom_collection.log,true);
ขั้นตอนที่ 2:หลังจากนั้นเข้าสู่ส่วนผู้ดูแลระบบวีโอไอพีและเปิดใช้งานการตั้งค่าการเข้าสู่ระบบ โปรดดูที่ด้านล่าง .
ระบบ> การกำหนดค่า> ผู้พัฒนา> การตั้งค่าบันทึก
ขั้นตอนที่ 3:หลังจากนั้นดูล็อกไฟล์“ custom_collection.log” ใน var / log / folder
Mage::log($collection->getSelect()->__toString(), Zend_Log::DEBUG, 'test.log', true);
แก้ไข:
แทนที่จะใช้null
(ย้อนกลับถึง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