0

我正在为我的 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() 我可以得到它的名字,但是我找不到任何方法来找到对象本身而不求助于某种黑客。而且我不喜欢黑客。任何人都可以帮助我吗?

4

2 回答 2

3

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

$customerId = $order->getCustomerId();
$customer = Mage::getModel('customer/customer')->load($customerId);
// customer stuff
于 2013-05-11T08:47:51.337 回答
1
$event = $observer->getEvent();
$invoice = $event->getInvoice();
$order = $invoice->getOrder();
echo $order->getCustomerId();

尝试使用它以防客户 ID 为 Null

于 2013-09-26T10:01:51.253 回答