Supponiamo che la persona che ha scritto questo potrebbe anche aver bisogno di fare ciò che è necessario fare. Generalmente, quando gli oggetti Magento hanno una relazione uno a molti, puoi trovare un metodo per caricare i molti su quello.
Hai un alias di classe sales/order
.
Ciò corrisponde a Mage_Sales_Model_Order
(in un'installazione stock).
Puoi trovare questo corso allo app/code/core/Mage/Sales/Model/Order.php
.
Se si esamina questa classe, ci sono 7 metodi con la parola "nave" in loro
function canShip
function setShippingAddress
function getShippingAddress
function getShip
function getShipmentsCollection
function hasShip
function prepareShip
Di questi 7, solo la semantica di getShipmentsCollection
indicare un metodo per afferrare le spedizioni di un ordine. Quindi cercate
foreach($order->getShipmentsCollection() as $shipment)
{
var_dump(get_class($shipment));
//var_dump($shipment->getData());
}
Oppure dare un'occhiata alla fonte per getShipmentsCollection
public function getShipmentsCollection()
{
if (empty($this->_shipments)) {
if ($this->getId()) {
$this->_shipments = Mage::getResourceModel('sales/order_shipment_collection')
->setOrderFilter($this)
->load();
} else {
return false;
}
}
return $this->_shipments;
}
fonte
2011-09-21 21:34:07
Grazie mille, Alan! Dopo aver dato un'occhiata a getShipmentsCollection() e Magento Collections, ho capito che usare getShipmentsCollection() -> count() è proprio quello di cui ho bisogno. –
La tua spiegazione è molto chiara come sempre (mi chiedo perché non lavori nel Core Team :) ... Tuttavia ... non sarebbe più facile controllare lo stato dell'ordine = 'completo'? ... Quindi: $ collection = Mage :: getResourceModel ('sales/order_collection') -> addAttributeToFilter ('increment_id', $ id) -> addAttributeToFilter ('stato', 'completo') – WonderLand