問題の解決に役立つ情報をお伺いしたいと思います。私の目的は、すべての注文でMagentoデータベースから特定の製品の数量を取得することです(注文は正確に定義されたステータスである必要があります)。Magentoとは別にバッチ/スクリプトを使用していますが、Mage:appを使用しています。モデルから始める必要があるのか(論理的なアプローチのようですが、同時に遅い)、データベースで直接作業するのか(これはより困難です)はわかりません。
アドバイスありがとうございます。
よろしく、
データベースのクエリはそれほど複雑ではありません。
SELECT *
FROM sales_flat_order o
LEFT JOIN sales_flat_order_item i ON o.entity_id = i.order_id
WHERE o.status IN ('pending', 'processing')
AND i.product_id = <YOUR_PRODUCT_ID>
total_qty_ordered
結果のフィールドは、注文数量を表します。
モデルを介して注文されたアイテムの数量を取得することも、それほど重くはありません。
<?php
require_once('app/Mage.php');
umask(0);
Mage::app('default');
$core_resource = Mage::getSingleton('core/resource');
$orders = Mage::getResourceModel('sales/order_collection');
$orders->getSelect()->joinLeft(array('ordered_products' => $core_resource->getTableName('sales/order_item')), 'main_table.entity_id = ordered_products.order_id', array('ordered_products.*'));
$orders->addAttributeToSelect('*')
->addFieldToFilter('status', array('in' => array('pending', 'processing')))
->addAttributeToFilter('main_table.store_id', Mage::app()->getStore()->getId())
->addAttributeToFilter('ordered_products.product_id', array('eq' => '2'));
foreach($orders as $order) {
echo 'Order #' . $order->getId() . ': ' . $order->getData('total_qty_ordered') . '<br/>';
}
最初のアプローチはより高速かもしれませんが、2番目のアプローチはMagneto-Upgrade-Safeになります。したがって、使用するアプローチを決定します。