如何检查magento中是否已存在具有给定增量ID的订单?

Tho*_*ele 3 magento

我是Magento的新手.

检查具有给定增量ID的订单是否已存在的正确方法是什么?

显而易见的方式:

    $order = Mage::getModel('sales/order')->loadByIncrementId($reservedOrderId);
    if ($order) {
        Mage::log('already have order with id ' . $reservedOrderId);
        return $order;
    }
Run Code Online (Sandbox Code Playgroud)

不起作用,因为我得到了一个新的空模型实例.

什么是magento的正确方法,看看我是否没有这个id的模型?

ben*_*rks 13

我在核心代码中看到的最常见的方法只是load()模型,并检查是否分配了主键.在您的情况下,这将如下所示 - 请注意对逻辑条件($object->getId()相对$object)的非常小的调整:

$order = Mage::getModel('sales/order')->loadByIncrementId($reservedOrderId);
if ($order->getId()) {
    Mage::log('already have order with id ' . $reservedOrderId);
    return $order;
}
Run Code Online (Sandbox Code Playgroud)

这是一个简单的错误,但请记住,在Magento数据模型上加载数据的调用将始终返回对象实例.只有当存储后端有结果时,才会使用数据装饰对象,从而使用主键.