有多种方法可以解决这个问题。首先,由于您知道预期的增量 ID,因此您可以在取回模型后检查它
$increment_id = '100000002';
$order = Mage::getModel('sales/order')->loadByIncrementId($increment_id);
if($order->getIncrementId() == $increment_id)
{
var_dump("Increment IDs match, that means there's an order");
}
else
{
var_dump("Increment IDs don't match, that means there's no order");
}
同样,尽管即使没有匹配也会返回一个模型,但您可以检查该模型的数据——空数组意味着没有加载任何内容
$increment_id = '100000002';
$order = Mage::getModel('sales/order')->loadByIncrementId($increment_id);
if($order->getData())
{
var_dump("Data array means there's an order");
}
else
{
var_dump("Empty data array means there's no order");
}
最后,您可以使用增量 id 过滤器加载集合,并检查它包含多少项
$increment_id = '100000002';
$c = Mage::getModel('sales/order')->getCollection()
->addFieldToFilter('increment_id',$increment_id);
if(count($c) > 0)
{
var_dump("A collection with more than zero items means the order exists");
}
else
{
var_dump("An empty collection means it does not");
}
我更喜欢最后一种方法来进行简单的“做/不做”存在检查,因为集合不会触发模型的加载后方法,这意味着它理论上性能更高。也就是说,没有一种方法比另一种更有效——只要尝试在任何地方使用相同的技术来获得更易读的代码。