Atributo backend_type = static?


23

¿Alguien puede explicar la importancia / relevancia de la backend_type estática para un atributo?

Tengo algunos problemas con un atributo que no se carga y me pregunto si esto backend_typetiene algo que ver con eso.

Además, ¿está relacionado de alguna manera con lo que se pone en las tablas planas?

Respuestas:


37

Atributos estáticos son atributos almacenados en la tabla principal de una entidad - para los productos del catálogo, catalog_product_entity. Por ejemplo, el atributo skude productos de catálogo se define como static. Magento siempre carga los atributos estáticos, y son útiles especialmente si desea recuperar información rápidamente u optimizar la búsqueda de datos. Un inconveniente de este tipo de atributos es que no puede tener valores específicos de la tienda, que es una de las ventajas del sistema Magento EAV.

Incluso si define un atributo como static, Magento no lo tratará como tal a menos que tenga una columna correspondiente en la tabla de entidades principal. Si la columna no está ahí, Magento trata el atributo como varcharpor defecto y lo busca en la tabla varchar EAV para el modelo - para los productos, catalog_product_entity_varchar.

Si desea utilizar atributos estáticos en su proyecto, debe hacer 2 cosas en sus scripts de instalación / actualización. Primero, debe agregar una columna a la tabla de entidad principal, con la definición de columna correcta. A continuación, debe instalar su atributo utilizando el addAttribute()método y definir su atributo como static. Consulte los scripts de instalación de Mage_Catalogpara comprender mejor cómo funcionan las cosas en este caso.

Si planea ejecutar consultas a menudo basadas en sus atributos estáticos personalizados, considere agregar un índice en la nueva columna para acelerar la recuperación de datos.


1
category_ids es estático. no está en la tabla catalog_product_entity_varchar.
ahnbizcad

resumen: estático significa que el valor es una columna catalog_product_entityy, si no lo está, volverá a registrarse en catalog_product_entity_varchar.
ahnbizcad

1

Aquí está la muestra del 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
));

1
¿Qué tiene esto que ver con la pregunta?
Marius

@ Mario esto es solo una muestra de cómo agregar un atributo estático.
Roman Snitko

Suponga que agrega la columna directamente a la base de datos a través de MySQL. ¿Cómo podría alterar el TIPO de un atributo de producto existente a STATIC? Pregunta: ¿podríamos actualizar type = static en una tabla determinada y funcionaría?
snh_nl
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.