これにアプローチする方法は複数あります。まず、予想される増分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");
}
コレクションはモデルのアフターロードメソッドをトリガーしないため、単純な「does / does-not」存在チェックの最後のアプローチを好みます。これは、理論的にはパフォーマンスが高いことを意味します。とは言うものの、他のアプローチよりも有効なアプローチはありません。より読みやすいコードを得るには、どこでも同じ手法を使用してみてください。