我正在尝试获取Magento中已查看产品的列表,但以下代码:
$model = Mage::getModel('reports/product_index_viewed')->getCollection()
->addAttributeToFilter('store_id', array('eq' => 1));
创建了错误消息:
致命错误:在第816行的C:\ xampp \ htdocs \ magento \ app \ code \ core \ Mage \ Eav \ Model \ Entity \ Abstract.php中的非对象上调用成员函数getBackend()< / p>
为什么在getCollection()中返回的集合是非对象?
答案 0 :(得分:2)
您的过滤器调用中有错误。实际上产品没有store_id属性,在您的案例中,集合尝试获取此属性,但由于它不存在,因此会发生错误。在报表集合中,创建了一个特殊的方法来指定存储过滤器,因此您的代码应该如下所示(我还包括正确类型提示的构造):
/* @var $collection Mage_Reports_Model_Resource_Product_Viewed_Collection */ // This enabled type hinting
$collection = Mage::getModel('reports/product_index_viewed')->getCollection();
$collection->setStoreId($storeId); // Setting data scope (e.g translated names, prices, etc)
$collection->addStoreFilter($storeId); // Set filter by exact availability on this store.
享受Magento开发的乐趣!