5

ゲスト注文を Magento の既存のアカウントにリンクしたいと考えています。これを達成するためにどのテーブルのどのフィールドを変更する必要があるか誰かが知っていますか?

もっと簡単な方法はありますか?

4

5 に答える 5

8

これも効きそうです..

$order_id = 5;  // Your Order ID
$customer_id = 7;  //Customer ID

$_order = Mage::getModel('sales/order')->load($order_id);

if($_order->getCustomerId() == NULL){
    $_order->setCustomerId($customer_id);
    $_order->save();
}
于 2012-10-08T17:58:26.683 に答える
6

If you are on Magento >= 1.4.1, you can run that in your database :

UPDATE sales_flat_order 
   SET customer_id = YOUR_CUSTOMER_ID_HERE 
WHERE entity_id = YOUR_ORDER_ID_HERE AND customer_id IS NULL

You will also need to upgrade the "grid" table :

UPDATE sales_flat_order_grid 
    SET customer_id = YOUR_CUSTOMER_ID_HERE 
WHERE entity_id = YOUR_ORDER_ID_HERE AND customer_id IS NULL
于 2012-07-10T09:59:37.980 に答える
3

バックエンドからは、エンティティ ID よりも注文から increment_id を取得する方が簡単なので、次の 2 つのクエリを使用することをお勧めします。

UPDATE sales_flat_order 
  SET customer_id = YOUR_CUSTOMER_ID_HERE, customer_is_guest=0, customer_group_id = YOUR_CUSTOMER_GROUP_ID_HERE
  WHERE increment_id = YOUR_INCREMENT_ID_HERE AND customer_id IS NULL

UPDATE sales_flat_order_grid 
  SET customer_id = YOUR_CUSTOMER_ID_HERE, 
  WHERE increment_id = YOUR_INCREMENT_ID_HERE AND customer_id IS NULL
于 2015-07-08T11:05:59.983 に答える
1

RS が投稿した内容を拡張するには:

管理者の注文画面にメンバーが属するグループを反映させたい場合は、さらに数行必要です。

$customer_id = xxxx;  //Customer ID
$order_increment_id = xxxxxxxxx; //Admin order increment id
$_order = Mage::getModel('sales/order')->loadByIncrementId($order_increment_id);

if($_order->getCustomerId() == NULL){
    $_order->setCustomerId($customer_id);
}

if($_order->getCustomerIsGuest() == "1"){
    $_order->setCustomerIsGuest(0);
}

if($_order->getCustomerGroupId() == "0"){
    $_order->setCustomerGroupId(1);
}

$_order->save();
于 2016-02-04T17:50:46.653 に答える