Bạn có một số cách để truy cập dữ liệu từ magento:
-
sử dụng load () => nó tải TẤT CẢ dữ liệu (thuộc tính) liên quan đến một mô hình. Nó rất chậm và giết người về hiệu suất. Đối với một sản phẩm, bạn chỉ nên sử dụng load () trên trang sản phẩm (vì tất cả dữ liệu bạn sẽ sử dụng trên trang đó liên quan đến một đối tượng duy nhất .. vì vậy bạn có thể tải nó một cách đầy đủ)
-
using collection => khi bạn cần lấy danh sách các đối tượng, bạn phải sử dụng (ít nhất) một collection. Bạn quyết định danh sách thuộc tính muốn truy xuất. Bạn có thể thêm thuộc tính để chọn / lọc và bộ sưu tập sẽ quản lý để thực hiện kết nối SQL với bảng EAV, v.v. trong nền
-
sử dụng SQL tùy chỉnh => bộ sưu tập có thể chậm khi xử lý các đối tượng phức tạp (một bộ sưu tập khởi tạo nhiều SQL tham gia vào bảng mà bạn có thể không cần) ... phương pháp cuối cùng để truy cập dữ liệu từ BDD là tạo SQL của riêng bạn trong ResourceModel của bạn
Trong tập lệnh bạn hiển thị, có một lỗi rất lớn:bạn tải một mô hình đầy đủ bên trong một foreach đang lặp lại trên một bộ sưu tập. Bạn không bao giờ được làm điều đó, nếu bạn phải tải () sản phẩm, tôi cho rằng đó là do bạn không tìm thấy thuộc tính trong bộ sưu tập? Trong trường hợp đó, bạn chỉ phải sửa đổi bộ sưu tập để truy xuất thuộc tính ...
Ví dụ:đối với một sản phẩm, magento cung cấp một cách để tự động thêm (hoặc xóa) các thuộc tính cho bất kỳ sản phẩm-> bộ sưu tập nào mà bạn khởi tạo. (xem thẻ XML frontend / product / collection / thuộc tính trong config.xml của Mage_Catalog)