致命错误:在非对象上调用成员函数addFieldToFilter

时间:2013-05-02 02:00:24

标签: php magento magento-1.5

我创建了一个自定义模块。失败的呼叫是:

$collection = Mage::getModel('[modulename]/[model]')->getCollection(); 
$collection->addFieldToFilter('is_public', 1)->getSelect();
$collection = Mage::getModel('[modulename]/[model]')->getCollection()->getFirstItem();//

显然,我在模特中搞砸了一些东西。他们在这里:

型号/ [模型] .PHP

class [namespace]_[modulename]_Model_[model] extends Mage_Core_Model_Abstract {
     public function _construct() {
         parent::_construct();
         $this->_init('[modulename]/[model]');
     }   
}

型号/ Mysql4 / [模型] .PHP

class [namespace]_[modulename]_Model_Mysql4_[model] extends Mage_Core_Model_Mysql4_Abstract        {
    public function _construct() {
       $this->_init('[modulename]/[model]', 'id');
     }   
 }

型号/ Mysql4 / [模型] /Collection.php

class [namespace]_[modulename]_Mysql4_[model]_Collection extends
Mage_Core_Model_Mysql4_Collection_Abstract {
       protected function _construct() {
          //parent::_construct();
          $this->_init('[modulename]/[model]');
       }   
}

收藏品有效。

$collection = Mage::getModel('[modulename]/[model]')->getCollection()->getData();

上面的代码返回表中的所有行。一旦我尝试将另一个函数应用于它,它就会失败。从我读过的内容来看,addFieldToFilter应该适用于正确设置的集合。

这是magento。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

检查以下内容:

  1. 您的Object的类是什么,并检查此类是否具有getFirstItem()函数。
  2. 注意: 抽象类Mage_Core_Model_Resource_Db_Collection_Abstract extends Varien_Data_Collection_Db没有getFirstItem()

    类Varien_Data_Collection实现IteratorAggregate,Countable

    有这个功能。

    请按照上面的说明检查您所讨论的Object类的类。

    将特定代码行粘贴到此错误的位置。