0

由于我需要以 JSON 格式对产品进行评分,因此我在模型文件夹中制作了一个带有控制器和 rating.php 文件的模块。我们运行控制器,它显示该表中的所有数据,但我只需要一行。所以通过 url 我传递了一个参数,但它不会工作。我在这里附上我的 indexcontroller.php。建议我。

<?php 
class Modulename_CustomRating_IndexController extends Mage_Core_Controller_Front_Action
{

  public function indexAction ()
   { 

$arrParams = $this->getRequest()->getParams();

  var_dump($arrParams);

$collection = Mage::getModel('Modulename_CustomRating_Model_CustomRating')->getCollection();
}
print_r (json_encode($collection ->getData()));



 }

}

?>

当我将 url 传递为:localhost/magento/customrating?vote_id=1 时,它会将参数传递给它,但会返回整个表的数据。我知道这是由于 getData(); 但是如何获得所需的行?

4

1 回答 1

1

你必须使用setEntityPkFilter方法。检查Mage_Rating_Model_Resource_Rating_Option_Vote_Collection类以获取其他方法。

$product_id = $this->getRequest()->getParam('product_id'); // or 'vote_id'

$collection = Mage::getModel('Modulename_CustomRating_Model_CustomRating')
              ->getResourceCollection()
              ->setEntityPkFilter($product_id);

如果你只想要 1 列,你可以尝试一些 Zend 的东西,因为你不能使用addAttributeToSelect. getSelect()返回 Zend 之类的查询:

$adapter = $this->getConnection(); // $this->getConnection();

$collection->getSelect()
           ->reset(Zend_Db_Select::COLUMNS) // remove all columns
           ->columns('attribute_name'); // add only needed one

$result = $adapter->fetchAll($select);

不确定这是否可行。它没有经过测试,只是一个想法。

于 2013-02-28T10:10:59.707 回答