如何在Magento中禁用SQL Query echo

时间:2013-07-29 12:56:50

标签: php magento zend-framework

我在Magento中创建了测试模块,我从浏览器调用了更改操作URL,并打印了目录/产品的SQL查询。

我使用此代码

<?php
class Test_Demo_IndexController extends Mage_Core_Controller_Front_Action
{

public function indexAction()
{
$this->loadLayout();     
$block = $this->getLayout()->createBlock('capacityweb/Test','Test',array('template' => 'capacity/web/test.phtml'));
$this->getLayout()->getBlock('content')->append($block);
$this->renderLayout();
}

public function changeAction()
{
$this->loadLayout();     
$this->renderLayout();

$action=$this->getRequest()->getParam('action');        
$id=$this->getRequest()->getParam('id');


if($action!=null && $id!=null)
{
$relContact = Mage::getModel('catalog/product')->getCollection()->load($id);   
}


}

} 

如果我使用

$ relContact = Mage :: getModel('catalog / product') - &gt; getCollection() - &gt; load($ id);

然后magento显示SQL查询,而不是这个

我用

$relContact = Mage::getModel('catalog/product')->getCollection();   

然后magento不显示任何内容。

那么如何解决

的问题
$relContact = Mage::getModel('catalog/product')->getCollection()->load($id);   

2 个答案:

答案 0 :(得分:1)

在阅读完代码后,我认为你要做的是加载一个产品,在这种情况下,你有$ id。 在这种情况下,您应该使用:

 $product = Mage::getModel('catalog/product')->load($id)

然后您可以通过以下方式访问所需数据:

   $product->getName();
   $product->getDescription()

......等等。

问候

答案 1 :(得分:0)

这不是问题 Magento使用Lazy Loading设计模式进行收藏 在加载集合或迭代结果之前,不会执行集合的sql 因此,Mage::getModel('catalog/product')->getCollection()将返回一个Mage_Catalog_Model_Resource_Product_Collection实例的对象,您可以根据需要使用它,但是您还没有产品。
在调用Mage::getModel('catalog/product')->getCollection()->load()时(顺便说一句...... $id参数无用),然后查询SELECT FROM catalog_product_entity.....$collection->getIterator()您将获得数据库中的记录作为Mage_Catalog_Model_Product的实例 的 [编辑]
如果您想要单个产品,请跳过getCollection来电。您可以获得此类产品的实例

$product = Mage::getModel('catalog/product')->load($id);
//changes some attributes
$product->setData('description', $description);
//or
//$product->setDescription($description);
$product->save().

See more details about it here