我想重写Mage::getResourceModel('sales/order_collection');
我的目标是重写此资源,以便我可以过滤掉特定商店的集合。
关于如何做的任何想法?我试着直接重写销售/订单模块的集合但没有成功。我能够重写销售/订单本身但不能重写集合,因为当我调用 getCollection()时它会返回
致命错误:调用未定义的方法 Mage_Sales_Model_Mysql4_Order :: getCollection()
答案 0 :(得分:2)
我可以通过在config.xml中添加以下行来重写
<global>
<!-- -->
<models>
<sales_mysql4>
<rewrite>
<order_collection>Company_ModelName_Model_Mysql4_Order_Collection</order_collection>
</rewrite>
</sales_mysql4>
</models>
<!-- -->
</global>
然后我在Model / Mysql4 / Order文件夹中添加了类Collection.php,扩展了Mage_Sales_Model_Mysql4_Order_Collection
即使这会覆盖订单集合类,但在运行以下代码时会出现错误(在非对象上调用成员函数joinAttribute()): Mage :: getResourceModel('sales / order_collection') - &gt; addAttributeToSelect('*') - &gt; joinAttribute('billing_firstname','order_address / firstname','billing_address_id',null,'left');
如果将上述行重新排列为以下3行,则不会出错:
$ collection = Mage :: getResourceModel('sales / order_collection');
$收藏 - &GT; addAttributeToSelect( '*');
$ collection-&gt; joinAttribute('billing_firstname','order_address / firstname','billing_address_id',null,'left');
我认为这是Magento中的一个错误。你怎么想?
谢谢Margots