2013-05-20 13 views
11

注文IDをmagentoから注文増分IDMagento - インクリメンタルIDから注文IDを取得

私はSKUからプロダクトIDを取得するには、次を使用することができます。

$product_id = Mage::getModel('catalog/product')->getIdBySku('ABCD1234'); 

上記の例では、私はすべてをロードすることなく、製品の単なるデータベースENTITY_IDを取得することができます。私は注文のために同じを達成したい。

答えて

0

:あなたのケースでは、あなたはこのようにそれを行うだろう非常に迅速かつ迅速に、あなたは注文オブジェクトモデルをロードする必要はありません。

$write = Mage::getSingleton('core/resource')->getConnection('core_read'); 
$result=$write->query("SELECT entity_id FROM `sales_flat_order` WHERE `increment_id` = 'your increment id' "); 
$row = $result->fetch(); 
echo $row['entity_id']; 
+1

驚くばかり、これは私が後にしたものです。 Btw、なぜ "core_write"は、私たちが選択しているだけで十分なcore_readではありませんか? – Latheesan

+0

ああ私の間違いはあなたも 'core_read'を使うことができます – Mufaddal

+1

上記のサンプルコードを若干最適化しました(動作確認済み):http://pastebin.com/gtpDbsbR。再度、感謝します。 – Latheesan

27

Magentoモデルでは、loadメソッドは、ロードする属性のオプションの2番目の引数を取ることができます。 だから、あなたの場合には、以下の作業をする必要があります。より複雑なケースで

$order = Mage::getModel('sales/order')->load($incrementId, 'increment_id'); 
    $id = $order->getId(); 

を、例えばフィールドの組み合わせでロードする場所、コレクションをロードしてコレクションの最初の要素を取得することができます。あなただけにして、単にあなたがforループでORDER_IDたい場合は、それが全体の順序オブジェクトをロードされておらず、それが、MySQLのクエリを使用ORDER_IDを取得したい場合は

$order = Mage::getModel('sales/order')->getCollection() 
     ->addFieldToFilter('increment_id', $increment_id) 
     ->getFirstItem(); 
+0

これで注文全体が読み込まれませんか?私はいくつかの注文のためのforループでこれを行う必要があります、そして、これは重いdbの負荷のためにいくつかのパフォーマンスの低下を招く恐れがあります。軽量な方法で注文IDをロードできますか? – Latheesan

+0

あなたが必要とするのはIDですが、@ Mufaddalのアプローチは軽量になります。 – Laizer

18

IncrementIdから注文を読み込むことができます。

$orderIncrementId = "1000001"; 
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId); 
echo $order->getId(); 
関連する問題