jose-c
8/8/2018 - 12:31 PM

Customer attribute create and save

Creating and save customer attribute

Create attribute

public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();

        if (version_compare($context->getVersion(), '0.1.1') < 0)
        {
            $customerSetup = $this->_customerSetupFactory->create(['setup' => $setup]);

            $customerEntity = $customerSetup->getEavConfig()->getEntityType('customer');
            $attributeSetId = $customerEntity->getDefaultAttributeSetId();

            /**@var $attributeSet AttributeSet */
            $attributeSet = $this->_attributeSetFactory->create();
            $attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);

            $customerSetup->addAttribute(Customer::ENTITY, 'sp_id', [
                'type' => 'varchar',
                'label' => 'SiemprePago Id',
                'input' => 'text',
                'required' => 0,
                'visible' => 1,
                'user_defined' => 0,
                'sort_order' => 200,
                'position' => 150,
                'system' => 0,
                'is_used_in_grid' => false,
                'is_visible_in_grid' => false,
                'is_filterable_in_grid' => false,
                'is_searchable_in_grid' => false
            ]);

            $attributeSpId = $customerSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'sp_id');
            $attributeSpId->addData([
                    'attribute_set_id' => $attributeSetId,
                    'attribute_group_id' => $attributeGroupId,
                    'used_in_forms' => [
                        'adminhtml_customer'
                    ]
                ])->save();
        }

        $setup->endSetup();
    }

Save attribute by script

/** @var \Magento\Customer\Model\ResourceModel\Customer $customerResource */
$customerResource = $this->_objectManager->create('Magento\Customer\Model\ResourceModel\Customer');
$customerFactory = $this->_objectManager->create('Magento\Customer\Model\CustomerFactory');
/** @var \Magento\Customer\Model\Customer $customer */
$customer = $customerFactory->create();
$customerResource->load($customer,4);

$customerData = $customer->getDataModel();
$customerData->setCustomAttribute('sp_id', '1462');
$customerData->setCustomAttribute('cellphone', '091919190');
$customer->updateData($customerData);

$customerResource->save($customer);