\Drupal\commerce_order\Entity\Order::load($order_id)
を使用して、IDで注文を読み込む方法を知っています。カスタムフィールド(Token ID)を注文に追加しました。
そのフィールドの値を知っている注文をどのようにロードできますか?注文の状態を取得したい場合、どうすればそれを達成できますか?
これを行う最善の方法は、Tokenフィールドに基づいてloadByProperties
を使用することです。
$orders = \Drupal::entityTypeManager()
->getStorage('commerce_order')
->loadByProperties(['field_token_id' => 'TOKEN VALUE']);
$order = reset($orders);
$state = $order->get('state')->value;
$total_price = $order->getTotalprice()->getNumber();
$currency = $order->getTotalprice()->getCurrencyCode();
ここでは、トークンを一意の値として想定しています。
Drupal EntityQueryを使用して注文IDを取得し、そのIDを使用して注文をロードする必要があります。次のコードが役立つ場合があります。
$query = \Drupal::entityQuery('commerce_order')
->condition('field_token_id.value', VALUE_OF_TOKEN);
$order_ids = $query->execute();
foreach($order_ids as $order_id) {
\Drupal\commerce_order\Entity\Order::load($order_id);
}
すべての注文を取得する最も効率的で迅速な方法は
$orders = \Drupal::entityTypeManager()->getStorage('commerce_order')->loadMultiple();
完了した注文を取得したい場合は、次のようにloadByProperties()を使用できます。
$orders = \Drupal::entityTypeManager()->getStorage('commerce_order')->loadByProperties(['state' => 'completed']);