Атрибут backend_type = статичний?


23

Чи може хтось пояснити важливість / актуальність backend_type статики для атрибута?

У мене виникають проблеми з тим, що атрибут не завантажується, і мені цікаво, чи це backend_typeпов'язане з цим?

Також, чи пов’язано це якимось чином з тим, що розміщено в плоских столах?

Відповіді:


37

Статичні атрибути - це атрибути, що зберігаються в головній таблиці об'єкта - для каталогічної продукції catalog_product_entity,. Наприклад, атрибут skuкаталогічної продукції визначається як static. Статичні атрибути завжди завантажуються Magento, і вони корисні, особливо якщо ви хочете швидко отримати інформацію або оптимізувати пошук даних. Недоліком цього типу атрибутів є те, що ви не можете мати значення, характерні для магазину, що є однією з переваг системи Magento EAV.

Навіть якщо ви визначите атрибут як " static, Magento не розглядає його як такий, якщо у вас немає відповідного стовпця в головній таблиці сутності. Якщо стовпець не існує, Magento обробляє атрибут , як varcharза замовчуванням , і виглядає для нього в таблиці VARCHAR EAV для моделі - для продуктів, catalog_product_entity_varchar.

Якщо ви хочете використовувати статичні атрибути у своєму проекті, вам слід виконати 2 речі в сценаріях встановлення / оновлення. Спочатку вам потрібно додати стовпець до основної таблиці сутності з правильним визначенням стовпця. Далі вам потрібно встановити свій атрибут за допомогою addAttribute()методу та визначити свій атрибут як static. Будь ласка, зверніться до сценаріїв встановлення, Mage_Catalogщоб краще зрозуміти, як все працює в цьому випадку.

Якщо ви плануєте запускати запити часто на основі своїх спеціальних статичних атрибутів, подумайте про додавання індексу до нового стовпця, щоб прискорити отримання даних.


1
category_ids є статичним. це не в таблиці catalog_product_entity_varchar.
ahnbizcad

резюме: статичне означає, що значення є стовпцем catalog_product_entity, і якщо його немає, воно повернеться до перевірки у каталогу_product_entity_varchar.
ahnbizcad

1

Ось зразок з основних:

$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
Що це стосується питання?
Маріус

@Marius - це лише зразок того, як додати статичний атрибут.
Роман Снітко

Припустимо, ви додаєте стовпець безпосередньо до БД через MySQL. Як ви могли змінити ТИП існуючого атрибута продукту на STATIC? Питання: чи могли ми просто оновити type = static у певній таблиці, і це буде працювати?
snh_nl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.