web-dev-qa-db-ja.com

特定のユーザーIDのUbercart注文を読み込む方法は?

特定のユーザーIDのUbercart注文をプログラムで読み込む方法は?

フォーマットされた注文テーブルを返すuc_order_history()のみがあり、その場合は機能しません。

4
kenorb

Drupal 7で次の関数を見つけます。

/**
 * Custom function to return list of orders for certain user
 */
function foo_get_user_orders($user, $order_status = 'completed') {
  $query = db_select('uc_orders', 'uo');
  $query->addField('uo', 'order_id');
  $query->addField('uo', 'order_total');
  $query->addField('uo', 'order_status'); // optional: $query->addField('uo', 'product_count');
  $query->addJoin('LEFT', 'uc_order_products', 'p', 'p.order_id = uo.order_id');
  $query->addField('p', 'nid');
  $query->condition('order_status', $order_status);
  $query->condition('uid', $user->uid);
  $result = $query->execute()->fetchAll();
  return $result;
}

Drupal 6の場合、 dbtng モジュールをインストールしてください。これで問題なく動作するはずです。

3
kenorb

これは、ユーザー(D7)のすべての注文オブジェクトを返す非常に単純な関数です。

function my_module_uc_orders_by_user($uid = NULL, $status = 'completed') {

  global $user;
  $uid = is_numeric($uid) ? $uid : $user->uid;

  if ($results = db_query("SELECT order_id FROM {uc_orders} WHERE uid = :uid AND order_status = :status", array(':uid' => $uid, ':status' => $status))->fetchAll()) {
    $order_ids = array();
    foreach ($results AS $result) {
      $order_ids[] = $result->order_id;
    }

    return uc_order_load_multiple($order_ids);
  }
}
3
superdrupal