Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento 数据库的更新字段_Magento_Magento 2.3 - Fatal编程技术网

Magento 数据库的更新字段

Magento 数据库的更新字段,magento,magento-2.3,Magento,Magento 2.3,我有这个代码来更新属性的最大长度 class UpgradeData implements UpgradeDataInterface { public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context) { $setup->startSetup(); if ($context->getVersion()

我有这个代码来更新属性的最大长度

class UpgradeData implements UpgradeDataInterface
{
    public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();
        if ($context->getVersion()
            && version_compare($context->getVersion(), '1.0.2') < 0
        ) {
            $table = $setup->getTable('eav_attribute');
            $setup->getConnection()
                ->update($table, ['frontend_class' => 'validate-length maximum-length-70'], 'attribute_id = 73');
        }
        $setup->endSetup();
    }
}
类UpgradeData实现UpgradeDataInterface
{
公共功能升级(ModuleDataSetupInterface$setup,ModuleContextInterface$context)
{
$setup->startSetup();
如果($context->getVersion()
&&版本比较($context->getVersion(),'1.0.2')<0
) {
$table=$setup->getTable('eav_属性');
$setup->getConnection()
->更新($table,['frontend_class'=>'validate length max-length-70'],'attribute_id=73');
}
$setup->endSetup();
}
}
它可以很好地工作,但属性的安装\u id=73我想把属性\u code=name放进去,但它不起作用。

试试这个

class UpgradeData implements UpgradeDataInterface
{
    /**
     * @var \Magento\Eav\Setup\EavSetupFactory
     */
    private $eavSetupFactory;
    
    public function __construct(\Magento\Eav\Setup\EavSetupFactory $eavSetupFactory)
    {
         $this->eavSetupFactory = $eavSetupFactory;
    }
    public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();
        if ($context->getVersion()
            && version_compare($context->getVersion(), '1.0.2') < 0
        ) {
            $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);
            $this->eavSetup->updateAttribute(
                'catalog_product',
                'ATTRIBUTE_CODE_GOES_HERE',
                'frontend_class',
                'validate-length maximum-length-70'
            );
        }
        $setup->endSetup();
    }
}
类UpgradeData实现UpgradeDataInterface
{
/**
*@var\Magento\Eav\Setup\EavSetupFactory
*/
私人$eavSetupFactory;
公共函数构造(\Magento\Eav\Setup\EavSetupFactory$EavSetupFactory)
{
$this->eavSetupFactory=$eavSetupFactory;
}
公共功能升级(ModuleDataSetupInterface$setup,ModuleContextInterface$context)
{
$setup->startSetup();
如果($context->getVersion()
&&版本比较($context->getVersion(),'1.0.2')<0
) {
$eavSetup=$this->eavSetupFactory->create(['setup'=>$setup]);
$this->eavSetup->updateAttribute(
“产品目录”,
“属性代码在这里”,
“前端_类”,
“验证长度最大值-长度-70”
);
}
$setup->endSetup();
}
}

注意打字错误。我没有检查代码。

你说的“我想把属性_code=name放进去,但它不起作用”是什么意思。你试过什么,它到底是怎么起作用的?我想更新数据库字段,其中属性_code=name,而不是在upgradedata中使用属性_id=xx。PHP这段代码到底是什么意思?我不明白你的问题。如果您询问代码的作用,它会用代码
属性\u code\u GOES\u此处
更新产品属性的字段
frontend\u class
。但在我的情况下,我只想更新属性\u code=name的frontend\u class。你能帮忙吗?是的,这正是代码的作用。但它不会通过直接查询来实现。它通过内部流程以推荐的方式进行操作。这最终转化为一个像您尝试过的查询,但它有一些额外的安全措施,所以如果我使用您的代码,我必须在这里输入名称而不是属性\u code\u GOES\u?