gpt4 book ai didi

php - 在使用可配置产品编辑订单后,通过 increment_id 在 Magento 中检索单个订单

转载 作者:可可西里 更新时间:2023-11-01 13:08:56 24 4
gpt4 key购买 nike

我在一家主要销售可配置产品的 Magento 商店中遇到了一个有趣的问题。我有一些代码可以打包订单信息并将其发送到外部仓库,然后由外部仓库完成订单。对于此请求,我使用 increment_id 作为标识符。我们定期询问仓库订单是否已发货,如果他们报告已发货,我们会通过 increment_id 在 Magento 中检索订单,并通过创建新的发货来完成订单。

现在,在编辑订单之前这一切正常。由于 Magento 对可配置产品的处理,编辑订单涉及取消当前订单并使用相同的 increment_id 重新创建它。随后,我基于 increment_id 的交互现在被破坏了,因为当我做这样的事情时,似乎只有第一个(已取消的)订单被检索到,因为 increment_id 不是不再独特:

<?php
$order = Mage::getModel('sales/order')->loadByIncrementId(100000001);
?>

通常情况下,不可能有重复的 increment_id,所以我希望 Magento 优先考虑“事件”顺序,但事实并非如此。

现在,我找到了一种通过集合来解决这个问题的方法:

<?php
$orders = Mage::getModel('sales/order')
->getCollection()
->addAttributeToFilter('state', array('neq' => Mage_Sales_Model_Order::STATE_CANCELED))
->addAttributeToFilter('increment_id', 100000001);

foreach ($orders as $order) {
// Do what we need with the order
}
?>

但是,我很想知道是否有一种方法可以只从集合中取回一条记录,从而不需要 foreach。这能做到吗?

最佳答案

使用getFirstItem()

$orders = Mage::getModel('sales/order')
->getCollection()
->addAttributeToFilter('state', array('neq' => Mage_Sales_Model_Order::STATE_CANCELED))
->addAttributeToFilter('increment_id', 100000001)
->getFirstItem();

关于php - 在使用可配置产品编辑订单后,通过 increment_id 在 Magento 中检索单个订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com