从sales_order_invoice_pay事件中检索原始Customer对象

时间:2013-05-11 01:28:02

标签: magento magento-1.7

我正在为我的Magento 1.7安装构建一个小模块。

触发sales_order_payment_pay事件时会调用我的函数。

基本上,它会查看客户的订单,以检查是否存在特定的魔术产品。

 // Retrieve the order
    $order = $observer->getPayment()->getOrder();
    // Look for product ID 999, whatever that is

    try {
        $magic_product = $order->getItemById(999);


        if ($magic_product){
            // The order contains our magic product; let's find our customer object and do something with it.
            //**$customer = $order->getCustomer();**
            $customer->setData( "foo", "bar" );
            $customer->save();
        }
    }  catch ( Exception $e ) {
        // Fail silently, I don't care...
    }

我正在尝试找到一种方法来升级对象层次结构以检索发出订单的客户(如果有的话!)。

使用getCustomerName()我可以得到它的名字,但我找不到任何方法来找到对象本身而不诉诸某种黑客。而且我不喜欢黑客。有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:3)

如果您尝试获取与订单相关的客户对象,则必须加载该订单并且订单具有客户ID:

$customerId = $order->getCustomerId();
$customer = Mage::getModel('customer/customer')->load($customerId);
// customer stuff

答案 1 :(得分:1)

$event = $observer->getEvent();
$invoice = $event->getInvoice();
$order = $invoice->getOrder();
echo $order->getCustomerId();

如果您获得Null for Customer ID

,请尝试使用此功能