Как проверить, есть ли у заказа отгрузка в Magento? - PullRequest
9 голосов
/ 22 сентября 2011

Мне нужно проверить, есть ли в заказе какой-либо комплект поставки.Единственные данные, которые я могу использовать, это идентификатор приращения заказа.Я получаю экземпляр модельного заказа, но не вижу способа получить экземпляр отгрузки.

Я использую этот код:

$order = Mage::getModel('sales/order')
    ->loadByIncrementId($order_increment_id);

Но какя могу получить экземпляр груза?Я знаю, что могу позвонить Mage::getModel('sales/order_shipment')->loadByIncrementId($shipment_increment_id), но как мне получить идентификатор приращения отгрузки?

Ответы [ 2 ]

27 голосов
/ 22 сентября 2011

Предположим, что человеку, написавшему это, возможно, также нужно было сделать то, что вам нужно.Обычно, когда объекты Magento имеют отношение один ко многим, вы можете найти метод для загрузки множества на один.

У вас есть псевдоним класса sales/order.

Это соответствует Mage_Sales_Model_Order (при стандартной установке).

Вы можете найти этот класс в app/code/core/Mage/Sales/Model/Order.php.

Если вы изучите этот класс, есть 7 методов со словом "корабль" в них

function canShip
function setShippingAddress
function getShippingAddress
function getShip
function getShipmentsCollection
function hasShip
function prepareShip

эти 7, только семантика getShipmentsCollection указывает на способ получения заказов.Так что попробуйте

foreach($order->getShipmentsCollection() as $shipment)
{
    var_dump(get_class($shipment));
    //var_dump($shipment->getData());
}

Или посмотрите на источник для 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;
}
9 голосов
/ 13 мая 2013

Просто для завершения Mage_Sales_Model_Order имеет открытый метод:
hasShipments()
, который возвращает количество отправлений и использует для внутреннего использования упомянутые getShipmentsCollection().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...