特定のユーザーIDのUbercart注文をプログラムで読み込む方法は?
フォーマットされた注文テーブルを返すuc_order_history()のみがあり、その場合は機能しません。
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 モジュールをインストールしてください。これで問題なく動作するはずです。
これは、ユーザー(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);
}
}