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行
修改成:
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
第四种方式:magento-debug插件查看
下面是插件下载地址
yangshuqiugithub/magneto-debug
安装插件直接的效果如下: