在Magento中显示原生SQL语法(Magento sql debug调试)

Magento标准对资料库存取的方式都是使用ORM ,需要除错的时候就会想要印出原生SQL来看看,完整的SQL到底长什么样子呢?

第一种方式 getSelect()显示sql的语句方式

只需要输出下面语句即可。

 echo (string)$creditmemoList->getSelect();

下面是操作案例:

$collection = Mage::getModel('sales/order_creditmemo')
                  ->getCollection()
                  ->addFieldToFilter('order_id', $order_id)
                  ->addFieldToFilter('transaction_id', array('is' => 'NULL'));
echo (string)$collection ->getSelect();

//SELECT `main_table`.* FROM `sales_flat_creditmemo` AS `main_table` WHERE (`order_id` = '70519') AND (`transaction_id` IS NULL);

上面是取得资料库资料的程式码,因为有getCollection,所以内建有一个function可以取得原生sql,echo (string)$collection->getSelect();,就会在画面上印出sql语法了。

第二种方式 在Magento中输出SQL语句用于调试

打开/lib/Varien/Db/Adapter/Pdo/Mysql.php大约在111行

$_debug=false位置

修改成:

 protected $_debug   = true; 

139行 看该类的一个变量

protected $_debugFile   = 'var/debug/pdo_mysql.log';

随便运行Magento的一个页面,打开var/debug/pdo_mysql.log看输出 :

第三种方式 显示sql语句

下面是一个Magento的 set save 操作

$model = Mage::getModel('sales/order_creditmemo')->load($id);
$model->setNewOrderId($incrementId);
$model->setStoreCreditUsed($store_credit_used);
$query = $model->save();

如果要印出save的原生sql,可到路径lib/Zend/Db/Adapter/Abstract.php的query()里面echo $sql;

\lib\Zend\Db\Adapter\Abstract.php

输出$sql

第四种方式:magento-debug插件查看

下面是插件下载地址

yangshuqiugithub/magneto-debug

安装插件直接的效果如下:

安装插件的效果

Leave a comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注