Atributo backend_type = estático?

23

Alguém pode explicar a importância / relevância da backend_type estática para um atributo?

Estou tendo alguns problemas com um atributo que não está sendo carregado e me pergunto se isso backend_typetem algo a ver com isso.

Além disso, isso está relacionado de alguma forma com o que é colocado nas tabelas planas?

Marty Wallace
fonte

Respostas:

37

Atributos estáticos são atributos armazenados na tabela principal de uma entidade - para produtos de catálogo catalog_product_entity,. Por exemplo, o atributo skude produtos de catálogo é definido como static. Os atributos estáticos são sempre carregados pelo Magento e são úteis especialmente se você deseja recuperar informações rapidamente ou otimizar a pesquisa de dados. Uma desvantagem desse tipo de atributo é que você não pode ter valores específicos da loja, o que é uma das vantagens do sistema Magento EAV.

Mesmo se você definir um atributo como static, o Magento não o tratará como tal, a menos que você tenha uma coluna correspondente na tabela principal de entidades. Se a coluna não estiver lá, o Magento tratará o atributo como varcharpadrão e o procurará na tabela varchar EAV para o modelo - para produtos catalog_product_entity_varchar,.

Se você deseja usar atributos estáticos em seu projeto, é necessário fazer duas coisas nos scripts de instalação / atualização. Primeiro, você precisa adicionar uma coluna à tabela de entidades principal, com a definição de coluna correta. Em seguida, você precisa instalar seu atributo usando o addAttribute()método e definir seu atributo como static. Consulte os scripts de instalação Mage_Catalogpara entender melhor como as coisas funcionam neste caso.

Se você planeja executar consultas frequentemente com base em seus atributos estáticos personalizados, considere adicionar um índice na nova coluna para acelerar a busca de dados.

fmrng
fonte
1
category_ids é estático. não está na tabela catalog_product_entity_varchar.
ahnbizcad
resumo: estático significa que o valor está em uma coluna catalog_product_entitye, se não estiver, voltará ao check-in catalog_product_entity_varchar.
ahnbizcad
1

Aqui está a amostra do núcleo:

$installer->run("
    ALTER TABLE `{$installer->getTable('catalog/product')}` ADD `has_options` SMALLINT(1) NOT NULL DEFAULT '0';
");

$installer->addAttribute('catalog_product', 'has_options', array(
    'type' => 'static',
    'visible'=>false,
    'default' => false
));
Roman Snitko
fonte
1
O que isso tem a ver com a pergunta?
Marius
@ Marius, este é apenas um exemplo de como adicionar um atributo estático.
Roman Snitko
Suponha que você adicione a coluna diretamente ao banco de dados via MySQL. Como você pode alterar o TYPE de um atributo de produto existente para STATIC? Pergunta: poderíamos apenas atualizar type = static em uma determinada tabela e funcionaria?
snh_nl