2013-03-02 51 views
1

我想删除Magento中所有与客户相关的地址(账单和送货地址)。我如何以编程方式执行此操作?有人可以帮我吗?清理Magento中的客户账单和送货地址

我使用这个代码:

$customer = Mage::getModel('customer/customer'); 
    $customer->setWebsiteId(Mage::app()->getWebsite()->getId()); 

    $customer->loadByEmail((string) $_REQUEST['email']); 

    $address = Mage::getModel('customer/address'); 

    $address->delete(); 

回答

0

你想删除的关系,或删除所有的地址?

关系

$col = Mage::getModel('customer/customer')->getCollection() 
foreach($col as $customer) { 
    $address = $customer->getDefaultBillingAddress(); 
    // set attributes 
    $address->save(); 

    $address = $customer->getDefaultShippingAddress(); 
    // set attributes 
    $address->save(); 

} 

删除所有地址

这是一个坏主意,因为有上的地址大量的外键。不要这样做。

+0

我想删除地址并想要设置新的运输和帐单地址。 – tinkesh 2013-03-02 11:47:19

+0

为什么要删除它们?加载并更改它们。 – 2013-03-02 12:06:59

+0

这是我的动机之一。我想做这个。你可以帮我吗? – tinkesh 2013-03-02 12:19:51

3

假设您已从客户收集中加载客户。找到下面的代码,使用客户ID加载客户地址并逐个删除。

if($customer){ 
     /*Load the customer addresses by Customer Id*/ 
     $customerAddressCollection = Mage::getResourceModel('customer/address_collection')->addAttributeToFilter('parent_id',$customer->getId())->getItems(); 
     foreach($customerAddressCollection as $customerAddress){ 
      $customer_address_id = $customerAddress->getData('entity_id'); 
      if($customer_address_id!=""){ 
     /*Load the Customer Address by ID and delete it*/  
       Mage::getModel('customer/address')->load($customer_address_id)->delete(); 
      } 
     } 
    } 
+0

优秀的工作..救了我的时间:-) +1 – Butterfly 2015-08-03 10:47:26

相关问题