问题:
是否可以确定Quote对象是否具有相关的Order对象而无需加载 订单对象?
研究
我已经看过以下方法,但我不是100%他们会准确:
is_active
,所以当订单完成时,此字段设置为0,我不确定这是否是它发生的唯一时间。reserved_order_id
,措辞似乎可能无法填写保留的订单。converted_at
(感谢@Marius),对我来说似乎总是null
。subtotal
,这看起来很有趣,如果报价确实已经订购了小计。我想我可以设置一个标志并将其添加到convert_quote_to_order
观察者,但必须有一个简单的内置方法来实现这一点,我真的不希望将订单对象加入我的额外开销我正在做的收集然后检查。
非常感谢。
答案 0 :(得分:8)
检查字段 converted_at
($quote->getConvertedAt()
)。如果它是null
,则表示它没有订单。如果它有订单,则应该是订单创建的日期。
的 [编辑] 强>
好。我已经检查过,我可以确认is_active
是检查报价是否有相关订单的可靠方法。如果值为0
,则报价有订单
方法0
将该标志设置为Mage_Sales_Model_Service_Quote::_inactivateQuote
,并在下订单时调用此方法:
Mage_Sales_Model_Service_Quote::submitOrder
Mage_Sales_Model_Service_Quote::submitNominalItems
Mage_Sales_Model_Service_Quote::submitAll
。
另一方面,reserved_order_id
不是转换为订单的报价的可靠标志。它可以填入一个值,但订单可能会丢失。我曾经有几次写过一个模块,我在下订单之前保留了订单ID。