A atualização é necessária para o código de atributo existente

8

Estou pensando em atualizar os dados is_required para "1" para o código de atributo "Região" existente.

select * From eav_attribute where attribute_id = '28'

No entanto, estou me perguntando qual é a prática aqui. É simplesmente criar uma instrução SQL e atualizar bem esse registro específico no script de instalação? Ou talvez possa haver uma maneira melhor.

Leongelis
fonte
Qual atributo de região? para pedido ou endereço?
Bijal Bhavsar
para pedido e endereço =)
Leongelis
ok eu já adicionou o código em abaixo resposta :)
Bijal Bhavsar

Respostas:

11

Criar script sql para atualizar o atributo da região

$installer->startSetup();
/*** Update customer address attributes*/
$installer->updateAttribute('customer_address', 'region', 'is_required', true); 

/*** Update order address attributes*/
$installer->updateAttribute('order_address', 'region', 'is_required', true);  
$installer->endSetup();

Espero que o código acima ajude

Bijal Bhavsar
fonte
Você pode explicar isso em profundidade com o exemplo.
Ami Kamboj
4

Estou escrevendo essas atualizações é simplesmente compartilhar minha pesquisa e espero que possa ajudar alguém por aí.

config.xml

<config>
    <modules>
        <Package_Module>
            <version>0.0.2</version>
        </Package_Module>
    </modules>
    <global>
        <resources>
            <module_setup>
                <setup>
                    <module>Package_Module</module>
                    <!-- 
                     Create a Switchable Installer Script 
                     This class is incredibly handy in case you need different setup classes 
                     -->
                    <class>Package_Module_Model_Resource_Setup</class> 
                </setup>
            </module_setup>
        </resources>
    </global>
<config>

Classe de instalação personalizada: Package_Module_Model_Resource_Setup

class Package_Module_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup
{
    public function getCatalogResourceSetup()
    {
        return new Mage_Catalog_Model_Resource_Setup('module_setup');
    }
    public function getCustomerResourceSetup()
    {
        return new Mage_Customer_Model_Resource_Setup('module_setup');
    }
    public function getCustomerEntitySetup() 
    {
        return new Mage_Customer_Model_Entity_Setup('module_setup');
    }
}

Script de atualização: mysql4-upgrade-0.0.1-0.0.2.php

<?php
/* @var $installer Package_Module_Model_Resource_Setup */
$installer = $this->getCustomerEntitySetup();

$installer->startSetup();
/*** Update customer address attributes*/
$installer->updateAttribute('customer_address', 'region', 'is_required', 1);

$installer->endSetup();

Este é um ótimo artigo que compartilhou sobre 'Script do instalador comutável'. Link da fonte: inchoo.net

Leongelis
fonte
0

Crie um script de atualização sql e execute a função updateAttribute.

$installer = $this;
$installer->startSetup();
$installer->updateAttribute('entity_type', 'your_attribute_id', 'required', 1);
$installer->endSetup();

Com esta função, você pode atualizar a propriedade de qualquer atributo.

oleksii.svarychevskyi
fonte
0

Eu estava tentando alguns scripts encontrados, mas o atributo ainda era necessário. O parâmetro correto é 'is_required' e não 'required'. $installer->updateAttribute('entity_type', 'your_attribute_id', 'is_required', 1);

Antonio Pedicini
fonte
0

O código abaixo atualizará o atributo usando o script sql

$installer = $this;
$this->updateAttribute('customer_address', 'region', 'is_required' ,1); 
Digisha
fonte
0

você pode encontrar a definição da função updateAttribute () no arquivo app\code\core\Mage\Eav\Model\Entity\setup.php

Ajay
fonte