为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 InstallData Magento 2 中添加多个属性

如何在 InstallData Magento 2 中添加多个属性

PHP
婷婷同学_ 2023-11-03 17:35:05
请指定如何在单个 InstallData 脚本中添加多个属性Magento 2 使用数据脚本添加属性。在文件夹 Vendor/Module/Setup/Patch/Data 添加 .php 文件(例如:AddCustomerAttributes)下面将添加一些客户属性。添加此 bin/magento setup:upgrade 命令后是必需的。如果脚本文件正确执行,那么将会在 patch_list 数据表中添加一个条目,当然还有 eav 属性表中的属性。<?phpnamespace Vendor\Module\Setup\Patch\Data;use Magento\Customer\Model\Customer;use Magento\Customer\Setup\CustomerSetupFactory;use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;use Magento\Framework\Setup\ModuleDataSetupInterface;use Magento\Framework\Setup\Patch\DataPatchInterface;class AddCustomerAttributes implements DataPatchInterface{    /**     * @var ModuleDataSetupInterface     */    protected $moduleDataSetup;    /**     * @var CustomerSetupFactory     */    protected $customerSetupFactory;    /**     * @var AttributeSetFactory     */    protected $attributeSetFactory;    /**     * AddCustomerPhoneNumberAttribute constructor.     * @param ModuleDataSetupInterface $moduleDataSetup     * @param CustomerSetupFactory $customerSetupFactory     * @param AttributeSetFactory $attributeSetFactory     */    public function __construct(        ModuleDataSetupInterface $moduleDataSetup,        CustomerSetupFactory $customerSetupFactory,        AttributeSetFactory $attributeSetFactory    ) {        $this->moduleDataSetup = $moduleDataSetup;        $this->customerSetupFactory = $customerSetupFactory;        $this->attributeSetFactory = $attributeSetFactory;    }如果您在这方面需要任何帮助,请告诉我。
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

它正在工作,我根据我的要求使用相同的方法使用 InstallData/UpgradeData.php 。


请检查我的答案这会将数据库中的数据保存在表 customer_entity_varchar 中,将属性保存在 eav_attribute 中。检查代码:


<?php

namespace CustomB2BRFQ\Module\Setup;


use Magento\Customer\Model\Customer;

use Magento\Framework\Setup\ModuleContextInterface;

use Magento\Framework\Setup\ModuleDataSetupInterface;

use Magento\Framework\Setup\UpgradeDataInterface;

use Magento\Customer\Setup\CustomerSetupFactory;

use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;


class UpgradeData implements \Magento\Framework\Setup\UpgradeDataInterface

{

private $eavSetupFactory;


private $eavConfig;


private $attributeResource;


private $customerSetupFactory;


/**

* @var AttributeSetFactory

*/

protected $attributeSetFactory;


protected $moduleDataSetup;



public function __construct(

\Magento\Eav\Setup\EavSetupFactory $eavSetupFactory,

\Magento\Eav\Model\Config $eavConfig,

\Magento\Customer\Model\ResourceModel\Attribute $attributeResource,

CustomerSetupFactory $customerSetupFactory,

AttributeSetFactory $attributeSetFactory,

ModuleDataSetupInterface $moduleDataSetup

) {

$this->eavSetupFactory = $eavSetupFactory;

$this->eavConfig = $eavConfig;

$this->attributeResource = $attributeResource;

$this->customerSetupFactory = $customerSetupFactory;

$this->attributeSetFactory = $attributeSetFactory;

$this->moduleDataSetup = $moduleDataSetup;


}


public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)

{


$customerSetup = $this->customerSetupFactory->create(['setup' => $setup]);

//$customerSetup->removeAttribute(Customer::ENTITY, "phonenumber");


$customerEntity = $customerSetup->getEavConfig()->getEntityType(Customer::ENTITY);

$attributeSetId = $customerEntity->getDefaultAttributeSetId();


$attributeSet = $this->attributeSetFactory->create();

$attributeGroupId = $attributeSet->getDefaultGroupId($attributeSetId);



/** attribute_1 */

$customerSetup->addAttribute(

Customer::ENTITY,

'phonenumber',

[

'type' => 'varchar',

'label' => 'Phone Number',

'input' => 'text',

'required' => true,

'visible' => true,

'user_defined' => true,

'sort_order' => 991,

'position' => 991,

'system' => 0,


]

);


$attribute = $customerSetup->getEavConfig()->getAttribute(

Customer::ENTITY,

'phonenumber'

);


$attribute->addData(

[

'attribute_set_id' => $attributeSetId,

'attribute_group_id' => $attributeGroupId,

'used_in_forms' => ['adminhtml_customer',

'customer_account_create',

'customer_account_edit']

]

);


$attribute->save();


/** attribute_2 */

$customerSetup->addAttribute(

Customer::ENTITY,

'gstnumber',

[

'type' => 'varchar',

'label' => 'GST Number',

'input' => 'text',

'required' => true,

'visible' => true,

'user_defined' => true,

'sort_order' => 992,

'position' => 992,

'system' => 0,

]

);


$attribute = $customerSetup->getEavConfig()->getAttribute(

Customer::ENTITY,

'gstnumber'

);


$attribute->addData(

[

'attribute_set_id' => $attributeSetId,

'attribute_group_id' => $attributeGroupId,

'used_in_forms' => ['adminhtml_customer',

'customer_account_create',

'customer_account_edit']

]

);


$attribute->save();



}

}

?>



查看完整回答
反对 回复 2023-11-03
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信