Magento Программно Создает и обновляет группу клиентов


Я использовал приведенный ниже код для создания группы клиентов программно, он хорошо работает. Но мне нужно, чтобы, если существует одна и та же группа клиентов, она должна обновлять значения, а не создавать новую с тем же именем.

$customer_group=Mage::getModel('customer/group');
$customer_group->setCode($typename.'_'.$id);
$customer_group->setTaxClassId(3);
$customer_group->save();
Author: Helphin, 2014-02-19

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 пустой экземпляр модели группы клиентов.

 8
Author: Marius, 2014-02-19 08:42:06

Мне также нужно было программно создать группу клиентов. В моем случае я использовал для этого скрипт обновления. Код следующий:

 /* @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();
 6
Author: diazwatson, 2015-06-22 07:49:59

Чтобы создать группу клиентов, попробуйте использовать приведенный ниже код.

<?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);
 1
Author: Keyul Shah, 2014-02-19 08:42:31

Распространенный способ сделать это - создать экземпляр модели и попытаться загрузить. Обновление и настройка исходных данных одинаковы независимо от того, существовала группа или нет.

Для этого не требуется никакого прямого 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();
 1
Author: Robert Egginton, 2015-11-25 11:28:56