แอตทริบิวต์ backend_type = คงที่?


23

ใครสามารถอธิบายความสำคัญ / ความเกี่ยวข้องของสbackend_type แตติกสำหรับแอตทริบิวต์ได้หรือไม่

ฉันมีปัญหาบางอย่างกับคุณลักษณะที่ไม่โหลดและฉันสงสัยว่าสิ่งนี้backend_typeเกี่ยวข้องกับมันหรือไม่?

นอกจากนี้สิ่งนี้เกี่ยวข้องในทางใดทางหนึ่งกับสิ่งที่ใส่ในตารางแบนหรือไม่?

คำตอบ:


37

แอตทริบิวต์แบบคงที่เป็นคุณสมบัติที่เก็บไว้ในตารางหลักของกิจการ - catalog_product_entityสำหรับผลิตภัณฑ์แคตตาล็อก ยกตัวอย่างเช่นแอตทริบิวต์ของผลิตภัณฑ์แคตตาล็อกถูกกำหนดให้เป็นsku staticคุณลักษณะแบบคงที่จะโหลดโดย Magento เสมอและมีประโยชน์โดยเฉพาะถ้าคุณต้องการดึงข้อมูลอย่างรวดเร็วหรือเพื่อเพิ่มประสิทธิภาพการค้นหาข้อมูล ข้อเสียเปรียบของคุณลักษณะประเภทนี้คือคุณไม่สามารถมีค่าเฉพาะร้านค้าซึ่งเป็นหนึ่งในข้อดีของระบบ Magento EAV

แม้ว่าคุณจะกำหนดแอททริบิวต์staticแต่วีโอไอพีจะไม่ถือว่าเป็นเช่นนั้นเว้นแต่คุณจะมีคอลัมน์ที่เกี่ยวข้องในตารางเอนทิตีหลัก ถ้าคอลัมน์ไม่ได้มีวีโอไอพีถือว่าแอตทริบิวต์เป็นvarcharค่าเริ่มต้นและดูมันในตาราง varchar EAV สำหรับโมเดล - catalog_product_entity_varcharสำหรับผลิตภัณฑ์

หากคุณต้องการใช้แอตทริบิวต์คงที่ในโครงการของคุณคุณต้องทำ 2 สิ่งในสคริปต์การติดตั้ง / อัปเกรด ก่อนอื่นคุณต้องเพิ่มคอลัมน์ในตารางเอนทิตีหลักพร้อมกับนิยามคอลัมน์ที่ถูกต้อง ถัดไปคุณจะต้องติดตั้งแอตทริบิวต์ของคุณโดยใช้วิธีการและกำหนดแอตทริบิวต์ของคุณเป็นaddAttribute() staticโปรดอ้างอิงถึงสคริปต์การติดตั้งMage_Catalogเพื่อให้เข้าใจได้ดีขึ้นว่าสิ่งต่าง ๆ ทำงานอย่างไรในกรณีนี้

หากคุณวางแผนที่จะเรียกใช้แบบสอบถามบ่อยครั้งตามแอตทริบิวต์สแตติกแบบกำหนดเองของคุณให้พิจารณาเพิ่มดัชนีในคอลัมน์ใหม่เพื่อเพิ่มความเร็วในการดึงข้อมูล


1
category_ids เป็นแบบคงที่ มันไม่ได้อยู่ในตาราง catalog_product_entity_varchar
ahnbizcad

สรุป: คงที่หมายถึงค่าที่เป็นคอลัมน์ในcatalog_product_entityและถ้าไม่มันก็จะถอยกลับไปตรวจสอบใน catalog_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

@Marius นี่เป็นเพียงตัวอย่างของวิธีเพิ่มแอตทริบิวต์แบบคงที่
Roman Snitko

สมมติว่าคุณเพิ่มคอลัมน์ลงในฐานข้อมูลโดยตรงผ่าน MySQL คุณจะเปลี่ยน TYPE ของแอตทริบิวต์ผลิตภัณฑ์ที่มีอยู่เป็น STATIC ได้อย่างไร คำถาม: เราสามารถอัพเดต type = static ในตารางที่กำหนดได้ไหม
snh_nl
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.