Tại sao các thuộc tính của các gói sản phẩm của một gói sản phẩm cũng được lưu vào chính sản phẩm đó? (cơ sở dữ liệu)


8

Gần đây tôi đang nghiên cứu làm thế nào các tùy chọn của bộ lọc điều hướng lớp trên trang danh mục được xác định và truy xuất. Tôi đã đào sâu một chút vào các mô hình và cơ sở dữ liệu cho nó, và ở đó tôi tìm thấy cơ chế sau mà tôi không hiểu:

Tình huống: Giả sử, tôi có một thuộc tính có tên color(property_id = 133), một sản phẩm đơn giản A(entity_id = 26) và một sản phẩm được đóng gói B(entity_id = 27) và Ađược thêm vào Bdưới dạng mục gói của nó Magento ver. 1.9.0.1.

Bước 1: color không được đặt cho cả hai AB

nhập mô tả hình ảnh ở đây

Bước 2: color được đặt là Black(value_id = 19) choB

nhập mô tả hình ảnh ở đây

Bước 3: color được đặt là White(value_id = 18) choA

nhập mô tả hình ảnh ở đây

Từ bước 3, chúng ta có thể thấy rằng các thuộc tính rõ ràng của các mục bó ( Atrong trường hợp này) cũng được lưu như thể chúng là các thuộc tính của chính sản phẩm bó ( Btrong trường hợp này). Và tôi tin rằng đây là lý do tại sao các thuộc tính của các mục của gói sản phẩm cũng xuất hiện trong bộ lọc điều hướng lớp.

Tôi muốn hỏi tại sao nó được thiết kế theo cách này? Tại sao hệ thống cũng lưu các thuộc tính của sản phẩm trẻ em vào sản phẩm gốc? Làm thế nào nó giúp trong bất kỳ quá trình cụ thể trong hệ thống?

Cảm ơn trước.

Câu trả lời:


2

Đó là cách tương tự với các sản phẩm cấu hình.

Nếu bạn đang tìm kiếm đôi giày màu trắng và các sản phẩm có thể cấu hình giải quyết vấn đề này cho bạn, sản phẩm được cung cấp. Tôi nghĩ rằng nó là dễ dàng như thế này. Vì vậy, nếu sản phẩm được tìm kiếm của bạn là một phần của sản phẩm đi kèm, sản phẩm này cũng được cung cấp.


Cảm ơn vì đã trả lời. Tôi hiểu điểm của bạn, nhưng tôi tò mò tại sao nó phải đạt được theo cách này? Vì tôi có vẻ như nó làm giảm tính linh hoạt khi ai đó không muốn các thuộc tính của sản phẩm trẻ em được kết nối với sản phẩm gốc (hoặc đơn giản là họ không muốn các thuộc tính của sản phẩm trẻ em hiển thị trong bộ lọc) . Và tôi không chắc mục đích "cơ chế" này phục vụ cho mục đích gì, ngoài việc chuẩn bị dữ liệu cho bộ lọc. Vì vậy, tôi không chắc chắn nếu tôi có thể loại bỏ bước này một cách an toàn mà không làm xáo trộn các bộ phận khác của hệ thống.
d.yuk

Bạn không. Hủy bỏ nó và sau đó kiểm tra. Tôi nghĩ rằng nó không có vấn đề. Trước đây tôi chỉ thêm thông tin, không bao giờ xóa một số. Nhưng vẫn: thử và kiểm tra :-) Chúc may mắn!
Fabian Blechschmidt

1
Vâng, tôi nghĩ rằng bạn đúng. Cuối cùng, tôi đã tìm ra những "liên kết" đó thực sự được tạo ra trong quá trình lập chỉ mục lại các thuộc tính sản phẩm. Vì vậy, tôi đoán những mối quan hệ đó được tạo ra cho mục đích tìm kiếm và lọc nhanh hơn, và sẽ tốt hơn nếu loại bỏ chúng. Cảm ơn một lần nữa.
d.yuk

@ d.yuk Tôi đang cố gắng để đạt được điều tương tự. Bạn có thể gửi làm thế nào bạn đạt được điều này với chỉ mục?
Aaron Pollock

1
@AaronPollock Tôi đã chỉnh sửa câu hỏi và đặt phương thức ở đó. Hy vọng nó có thể giúp đỡ. Chúc may mắn!
d.yuk

7

Cập nhật: làm thế nào để ngăn chặn bộ chỉ mục bao gồm các sản phẩm con

  1. Mở rộng và sửa đổi Mage_Catalog_Model_Resource_Product_Indexer_Eav_Abstract.
  2. Hãy tìm chức năng _prepareRelationIndex().
  3. Sửa đổi câu lệnh xây dựng truy vấn SQL như sau:

Mã số:

$select = $write->select()
    ->from(array('l' => $this->getTable('catalog/product_relation')), 'parent_id')
    ->join(
        array('cs' => $this->getTable('core/store')),
        '',
        array())
    ->join(
        array('i' => $idxTable),
        'l.child_id = i.entity_id AND cs.store_id = i.store_id',
        array('attribute_id', 'store_id', 'value'))
    ->join(
        array('e' => 'catalog_product_entity'),
        'l.parent_id = e.entity_id',
        array())
    ->group(array(
        'l.parent_id', 'i.attribute_id', 'i.store_id', 'i.value'
    ))
    ->where('e.type_id != ?', 'bundle');

Làm thế nào để ngăn chặn bộ chỉ mục bao gồm các sản phẩm trẻ em tham khảo : thêm mã được tô màu đỏ

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.