如何记录集合的SQL查询?


9

我想记录自定义集合的SQL查询。我尝试了以下代码。但是没有用。任何建议将不胜感激。

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

Answers:


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管理部分并启用日志设置。请看下面。

系统>配置>开发人员>日志设置

步骤3:然后,在var / log /文件夹中查看日志文件“ 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.