对 db Magento 1 中的每个客户执行操作

Do an action on every customers in db Magento 1

我想更改我数据库中所有客户的group_id。
所以我试着这样做:

$customers = Mage::getModel('customer/customer')->getCollection();
$customerSubscriptionHelper = Mage::helper('mymodule_customer/subscription');

foreach ($customers as $customer) {
    $isCustomerSubscribed = $customerSubscriptionHelper->getCustomerActiveSubscription($customer);
    if (!$isCustomerSubscribed) {
        $customer->setData('group_id', '1');
        $customer->save();
    }
}

但我不知道这是否是 'parse' 这样的数据库的好方法...
谢谢!

这完全取决于您何时(在什么条件下)以及执行 activity 的频率。

假设您在用户访问购物车页面或访问主页后立即执行此过程,那么这将是一个不好的继续方法。

因为这种方法适用于小数据,但当数据量增加时会导致性能问题,因为您将频繁循环访问大量数据。

更好的方法是应用观察者并一次更新当前用户的信息。

同样,我不知道您的用例到底是什么,为什么要一次更新所有用户,以及更新的条件是什么。

但是,如果您的数据量不大,那么这会 运行 导致大量 data.But 的性能问题。

谢谢