【问题标题】:Get order ids with status = 'Complete' in Magento在 Magento 中获取状态 = 'Complete' 的订单 ID
【发布时间】:2012-01-08 16:56:22
【问题描述】:

我正在努力获取 Magento 中 status ='complete' 的订单的订单 ID 和其他详细信息。我确信在 magento 中有一种方法可以检索所有状态为 Complete 的订单。由于我是 magento 的新手,我发现很难解决这个问题。

我想向订单状态为完成的客户发送一封电子邮件,并在发送电子邮件后标记他们。但那是它的后半部分。谁能告诉我如何在 magento 中获取状态为 Complete 的所有订单 ID?

感谢任何帮助。提前致谢。

【问题讨论】:

    标签: php magento orders


    【解决方案1】:

    这可以作为基本 Magento 安装文件夹中的脚本运行。如果它已经在 Magento 文件中运行(控制器或块或其他),则不需要前三行。

    <?php
    require_once('app/Mage.php');
    Mage::app();
    
    $orders = Mage::getModel('sales/order')->getCollection()
        ->addFieldToFilter('status', 'complete')
        ->addAttributeToSelect('customer_email')
        ;
    foreach ($orders as $order) {
        $email = $order->getCustomerEmail();
        echo $email . "\n";
    }
    

    编辑:

    查看所有个带有状态和电子邮件的订单:

    $orders = Mage::getModel('sales/order')->getCollection()
        //->addFieldToFilter('status', 'complete')
        ->addAttributeToSelect('customer_email')
        ->addAttributeToSelect('status')
        ;
    foreach ($orders as $order) {
        $email = $order->getCustomerEmail();
        echo $order->getId() . ": '" . $order->getStatus() . "', " . $email . "\n";
    }
    

    【讨论】:

    • 感谢您的回复。我尝试了您的代码,它确实有效,但我在数据库中获得了三个状态为 Complete 的订单。然而,它只是向我展示了这 3 个订单中的一个电子邮件 ID。我想显示状态为“完成”的所有订单(id n 联系电子邮件)。另外,如果我也需要打印订单 ID,是否有任何方法如 getOrderId() 或 getId() 或其他方法可以做到这一点
    • 您可能想阅读一些有关 Magento 开发的信息。我发现最好的文章是 Alan Storm 在他的网站上的文章:alanstorm.com/category/magento 要获取 Id,您可以在循环内执行 $order->getId()。不过,您可能想做 $order->getIncrementId() ,具体取决于您的需要。关于您的问题,我不知道该说什么,除了尝试删除过滤器并打印所有订单、状态和 id 像这样echo $order-&gt;getId() . ": '" . $order-&gt;getStatus() . "', " . $email . "\n";
    • 嗯,我确实想要状态 = 完成的订单,但我也想查看这些特定订单的订单 ID、客户名称、客户电子邮件。所以你以前的解决方案很好,只是我也想要订单 ID。但是,即使我尝试了 getId() 和 getIncrementId() ,但它们似乎都没有返回任何订单 ID。
    • 另外,如果我想向订单状态仅完成一次的客户发送电子邮件怎么办。即那个特定的客户不应该收到两次电子邮件,我该如何做到这一点。做起来容易吗?
    • 创建一个在订单完成时触发的观察者。 alanstorm.com/magento_config 解释观察者。
    【解决方案2】:

    获取订单状态为“已完成”的所有产品

    $orders = Mage::getResourceModel('sales/order_collection')
    ->addFieldToSelect('*')
    ->addFieldToFilter('customer_id', Mage::getSingleton('customer/session')->getCustomer()->getId())
    ->addFieldToFilter('state', array('in' => Mage::getSingleton('sales/order_config')->getVisibleOnFrontStates()))
    ->addFieldToFilter('status', 'complete')
    ->setOrder('created_at', 'desc');
    
    $this->setOrders($orders);
    foreach ($orders as $order)
    {
    $order_id=$order->getRealOrderId();
    $order = Mage::getModel('sales/order')->load($order_id, 'increment_id');
    $order->getAllVisibleItems();
    $orderItems = $order->getItemsCollection()
        ->addAttributeToSelect('*')
        ->addAttributeToFilter('product_type', array('eq'=>'simple'))
        ->load();
    foreach($orderItems as $Item)
    {
        $Item = Mage::getModel('catalog/product')->setStoreId($Item->getStoreId())->load($Item->getProductId());
        if ($Item->getId())
        {
            echo $Item->getName();
            echo $Item->getPrice();
            echo $Item->getProductUrl();
            echo $Item->getImageUrl();
            }
        }
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      相关资源
      最近更新 更多