Thuộc tính backend_type = static?


23

Ai đó có thể giải thích tầm quan trọng / mức độ liên quan của backend_type tĩnh đối với một thuộc tính không?

Tôi đang gặp một số vấn đề với một thuộc tính không được tải và tôi tự hỏi liệu điều này backend_typecó liên quan gì đến nó không?

Ngoài ra, điều này có liên quan theo một cách nào đó như những gì được đặt trong các bàn phẳng?

Câu trả lời:


37

Các thuộc tính tĩnh là các thuộc tính được lưu trữ trong bảng chính của một thực thể - cho các sản phẩm danh mục , catalog_product_entity. Ví dụ, thuộc tính skucủa các sản phẩm danh mục được định nghĩa là static. Các thuộc tính tĩnh luôn được Magento tải và rất hữu ích, đặc biệt nếu bạn muốn truy xuất thông tin nhanh chóng hoặc để tối ưu hóa việc tra cứu dữ liệu. Một nhược điểm của loại thuộc tính này là bạn không thể có các giá trị cụ thể của cửa hàng, đây là một trong những lợi thế của hệ thống Magento EAV.

Ngay cả khi bạn xác định một thuộc tính là static, Magento sẽ không xử lý nó như vậy trừ khi bạn có một cột tương ứng trong bảng thực thể chính. Nếu cột không có ở đó, Magento coi thuộc tính như varcharmặc định và tìm kiếm nó trong bảng EAV varchar cho mô hình - cho các sản phẩm , catalog_product_entity_varchar.

Nếu bạn muốn sử dụng các thuộc tính tĩnh trong dự án của mình, bạn phải thực hiện 2 điều trong tập lệnh cài đặt / nâng cấp. Đầu tiên, bạn cần thêm một cột vào bảng thực thể chính, với định nghĩa cột chính xác. Tiếp theo, bạn cần cài đặt thuộc tính của mình bằng addAttribute()phương thức và xác định thuộc tính của bạn là static. Vui lòng tham khảo các tập lệnh cài đặt Mage_Catalogđể hiểu rõ hơn cách mọi thứ hoạt động trong trường hợp này.

Nếu bạn có kế hoạch chạy thường xuyên các truy vấn dựa trên các thuộc tính tĩnh tùy chỉnh của mình, hãy xem xét thêm một chỉ mục trên cột mới để tăng tốc độ tìm nạp dữ liệu.


1
category_ids là tĩnh. nó không có trong bảng catalog_product_entity_varchar.
ahnbizcad

tóm tắt: static có nghĩa là giá trị là một cột trong catalog_product_entityvà nếu không, nó sẽ quay trở lại để kiểm tra trong catalog_product_entity_varchar.
ahnbizcad

1

Đây là mẫu từ lõi:

$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
Điều này có liên quan gì đến câu hỏi?
Marius

@Marius đây chỉ là một ví dụ về cách thêm thuộc tính tĩnh.
Roman Snitko

Giả sử bạn thêm cột trực tiếp vào DB thông qua MySQL. Làm thế nào bạn có thể thay đổi LOẠI của một thuộc tính sản phẩm hiện có thành STATIC? Câu hỏi: chúng ta có thể cập nhật type = static trong một bảng nhất định không và nó có hoạt động không?
snh_nl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.