Events Magento自动订单状态-获取订单状态/状态列表

Events Magento自动订单状态-获取订单状态/状态列表,events,magento,model,status,Events,Magento,Model,Status,我正在尝试构建一个Magento模块,该模块观察特定事件,并尝试根据付款方式自动进入新的自动状态。 为了做到这一点,我根据付款方式在后台组织了一些状态。例如: 事件:sales\u order\u place\u after 自动状态:pp_1_pending-第一个状态/状态,如果付款方式为paypal,则新下订单将自动具有此状态 事件:sales\u order\u pay\u pay 自动状态:pp_2_payment-付款方式为paypal时,订单付款后的第二个状态/状态 事件:sale

我正在尝试构建一个Magento模块,该模块观察特定事件,并尝试根据付款方式自动进入新的自动状态。
为了做到这一点,我根据付款方式在后台组织了一些状态。例如:

事件:
sales\u order\u place\u after

自动状态:
pp_1_pending
-第一个状态/状态,如果付款方式为paypal,则新下订单将自动具有此状态

事件:
sales\u order\u pay\u pay

自动状态:
pp_2_payment
-付款方式为paypal时,订单付款后的第二个状态/状态

事件:
sales\u order\u invoice\u save\u after

自动状态:
pp\u 3\u complete
-订单开具发票后的第三个也是最后一个状态/状态,结束交易

要使其正常工作,我需要收集前缀为pp_u的所有状态,并在检查订单上设置的状态后,继续执行订单中的下一个状态。这样,该模块将具有可扩展性

然而,我似乎无法获得状态集合。我正在努力:
$statuses=Mage::getModel('sales/order_status')
->getCollection()
->addAttributeToSelect(“状态”)
->addAttributeToSelect('label')
->addFieldToFilter('status',array('like','pp')


希望有人能帮助我。谢谢大家

如果生成的SELECT查询看起来正常,请查看它

$collection->getSelect()->__toString();

如果生成的SELECT查询看起来正常,请查看它

$collection->getSelect()->__toString();

您必须在查询中使用通配符(%),因为您希望状态以pp开头:

$statuses = Mage::getModel('sales/order_status')  
        ->getCollection()  
        ->addAttributeToSelect('status')  
        ->addAttributeToSelect('label')  
        ->addFieldToFilter('status',array('like','pp_%'));

您必须在查询中使用通配符(%),因为您希望状态以pp开头:

$statuses = Mage::getModel('sales/order_status')  
        ->getCollection()  
        ->addAttributeToSelect('status')  
        ->addAttributeToSelect('label')  
        ->addFieldToFilter('status',array('like','pp_%'));

addAttributeToSelect()函数用于基于EAV的模型。对于平面模型,使用addFiedToSelect()

代码应该是

$statuses = Mage::getModel('sales/order_status')
->getCollection()
->addFieldToSelect('status')
->addFieldToSelect('label')
->addFieldToFilter('status',array('like'=>'pp_%'));

addAttributeToSelect()函数用于基于EAV的模型。对于平面模型,使用addFiedToSelect()

代码应该是

$statuses = Mage::getModel('sales/order_status')
->getCollection()
->addFieldToSelect('status')
->addFieldToSelect('label')
->addFieldToFilter('status',array('like'=>'pp_%'));

如果有人想知道,要同时获得状态和状态,这里有一个函数供您使用:
private函数\u allStatusStateCollection($filter){
$collection=Mage::getModel('sales/order_status')
->getCollection()->JoinState();
if($filter!=''){return$collection->addFieldToFilter('main_table.status',array('like'=>$filter.%');}
返回$collection;

}

如果有人想知道,为了将状态和状态结合起来,这里有一个函数供您使用:
private函数\u allStatusStateCollection($filter){
$collection=Mage::getModel('sales/order_status')
->getCollection()->JoinState();
if($filter!=''){return$collection->addFieldToFilter('main_table.status',array('like'=>$filter.%');}
返回$collection;

}

谢谢,但无法获取任何数据:/Thank,但无法获取任何数据:/sales/order\u状态下使用此选项!但不包括销售/订单状态。它提供sql字符串。如果有人想知道,为了将状态和状态结合起来,这里有一个函数供您使用:
private function(所有状态状态集合($filter){$collection=Mage::getModel('sales/order状态')->getCollection()->joinStates();if($filter!=''){return$collection->addFieldToFilter('main_table.status',array('like'=>$filter.%'));}return$collection;}
这适用于sales/order\u status!但不适用于sales/order\u status\u state。它提供sql字符串。如果有人想知道,要同时获取状态和状态,这里有一个函数:
专用函数_allStatusStateCollection($filter){$collection=Mage::getModel('sales/order\u status'))->getCollection()->joinStates();if($filter!=''){return$collection->addFieldToFilter('main_table.status',array('like'=>$filter.%');}return$collection;}