Không thể tải đối tượng trích dẫn


24

Có phải sales/quoteđối tượng làm việc khác với các đối tượng khác khi tải? Xem những điều sau đây ..

Công trinh:

$quote = Mage::getModel('sales/quote')->getCollection()
    ->addFieldToFilter('entity_id', $quoteId)
    ->getFirstItem();
print_r($quote->getData()); // shows right data

Không hoạt động:

$quote = Mage::getModel('sales/quote')->load($quoteId);
print_r($quote->getData()); // empty

Cả hai $quoteđều đúng của lớp Mage_Sales_Model_Quote,.


với 5 upvote tôi không hiểu làm thế nào câu hỏi này được đánh dấu là lạc đề và không thể lặp lại. vấn đề này có thể được sao chép. Chỉ cần tải một trích dẫn trên trang xem thứ tự frontend và trên trang xem thứ tự quản trị viên, nó sẽ hoạt động khác nhau. Câu trả lời củaebebiedave hoạt động hoàn hảo trong kịch bản này.
Reena Parekh

Câu trả lời:


29

Đặt cửa hàng trước:

$store = Mage::getSingleton('core/store')->load(1);

$quote = Mage::getModel('sales/quote')->setStore($store)->load($quoteId);

2

Không, Mage_Sales_Model_Quotegiống như tất cả các mô hình dựa trên db khác. Bạn làm điều gì đó sai. Có lẽ mã hóa cứng $quoteId? Bạn có chắc là nó đúng không? Cả hai mã nên hoạt động.


Vâng, tôi đã thử sử dụng một số nguyên thay cho $quoteId. Tôi bắt đầu nghĩ có lẽ $quoteIdcần phải là một chuỗi hoặc một cái gì đó. Kịch bản của tôi hiện đang chạy, vì vậy tôi sẽ kiểm tra vào ngày mai.
nhạcliftsme

Hmm, nó cũng không hoạt động trên một cá thể khác, với ID thực thể trích dẫn được nối cứng theo chuỗi hoặc số nguyên. Fabian, bạn đã thử đoạn mã tôi đã đăng chưa?
nhạcliftsme

1
Trong khi mô hình giống như các mô hình db khác, mô hình tài nguyên Mage_Sales_Model_Resource_Quote thực hiện bộ lọc được mã hóa cứng trên id lưu trữ bởi _getLoadSelect (). Cách xung quanh nó là sử dụng Mage::getResourceSingleton('sales/quote')->loadByIdWithoutStore($quote, $order->getQuoteId()). Bây giờ nếu chỉ tôi có thể bảo nó KHÔNG tải một đối tượng khách hàng đầy đủ và bắt đầu một phiên, tôi là một người cắm trại hạnh phúc.
Melvyn

3
Đối với bất kỳ ai phải đối mặt như nhau: đó là SalesRule / Model / Observer.php khởi tạo một phiên khi tải các mục trích dẫn. Chỉ để có được khách hàng GroupId. Tôi đã giải quyết vấn đề này bằng cách viết lại Sales_Model_Quote và đặt id nhóm khách hàng trong Mage :: registry và giảng dạy Mage_SalesRule_Model_Observer-> add SẢNtAttribution trước tiên ở đó.
Melvyn

2
Chỉ cần nhìn thấy điều này. Tôi đã bỏ phiếu để mở lại. Cảm ơn Melvyn.
nhạcliftsme

0

Bạn đã có thể sử dụng

$quote = Mage::getModel('sales/quote')->loadByIdWithoutStore($quoteId);

Nó hoạt động trong Magnto Enterprise ver. 1.14.2.4

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.