Magento Программно Создает и обновляет группу клиентов
Я использовал приведенный ниже код для создания группы клиентов программно, он хорошо работает. Но мне нужно, чтобы, если существует одна и та же группа клиентов, она должна обновлять значения, а не создавать новую с тем же именем.
$customer_group=Mage::getModel('customer/group');
$customer_group->setCode($typename.'_'.$id);
$customer_group->setTaxClassId(3);
$customer_group->save();
4 answers
$code = 'Your code here';
$collection = Mage::getModel('customer/group')->getCollection() //get a list of groups
->addFieldToFilter('customer_group_code', $code);// filter by group code
$group = Mage::getModel('customer/group')->load($collection->getFirstItem()->getId()); //load the first group with the required code - this may not be neede but it's a good idea in order to make magento dispatch all events and call all methods that usually calls when loading an object
$group->setCode($code); //set the code
$group->setTaxClassId(3); //set tax class
$group->save(); //save group
При описанном выше подходе, если группа с определенным кодом существует, вы получите ее в переменной $group
. Если он не существует, вы просто получите в $group
пустой экземпляр модели группы клиентов.
Мне также нужно было программно создать группу клиентов. В моем случае я использовал для этого скрипт обновления. Код следующий:
/* @var $installer Mage_Customer_Model_Resource_Setup */
$installer = $this;
$installer->startSetup();
$installer->getConnection()->insert($installer->getTable('customer/customer_group'), array(
'customer_group_code' => 'YOUR_CUSTOMER_GROUP',
'tax_class_id' => 3
));
$installer->endSetup();
Чтобы создать группу клиентов, попробуйте использовать приведенный ниже код.
<?php
require_once 'app/Mage.php';
umask(0);
/* not Mage::run(); */
Mage::app('default');
//Create Customer Group
Mage::getSingleton('customer/group')->setData(
array('customer_group_code' => 'Partners','tax_class_id' => 5))
->save();
?>
Для редактирования группы клиентов
$data=Mage::getSingleton('customer/group')->load($customer_group_id);
print_r($data);
Распространенный способ сделать это - создать экземпляр модели и попытаться загрузить. Обновление и настройка исходных данных одинаковы независимо от того, существовала группа или нет.
Для этого не требуется никакого прямого SQL или создания коллекции:
$code = $typename.'_'.$id;
// Create model and attempt to load
$customerGroup = Mage::getModel('customer/group');
$customerGroup->load($code,'customer_group_code');
// If does not exist, set code
if (!$customerGroup->getId()) {
$customerGroup->setCode($code);
}
// Set data and save whether existed or not
$customerGroup->setTaxClassId(3);
$customerGroup->save();