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

请指定如何在单个 InstallData 脚本中添加多个属性


Magento 2 使用数据脚本添加属性。在文件夹 Vendor/Module/Setup/Patch/Data 添加 .php 文件(例如:AddCustomerAttributes)


下面将添加一些客户属性。添加此 bin/magento setup:upgrade 命令后是必需的。


如果脚本文件正确执行,那么将会在 patch_list 数据表中添加一个条目,当然还有 eav 属性表中的属性。


<?php

namespace 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;

    }



如果您在这方面需要任何帮助,请告诉我。


婷婷同学_
浏览 105回答 1
1回答

蝴蝶不菲

它正在工作,我根据我的要求使用相同的方法使用 InstallData/UpgradeData.php 。请检查我的答案这会将数据库中的数据保存在表 customer_entity_varchar 中,将属性保存在 eav_attribute 中。检查代码:<?phpnamespace 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();}}?>
打开App,查看更多内容
随时随地看视频慕课网APP