对 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 的性能问题。
谢谢
我想更改我数据库中所有客户的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 的性能问题。
谢谢