Я пытаюсь выяснить, сколько раз товар заказывался за последние две недели. Пока у меня есть цикл получения продуктов.
foreach($productCollection as $product){
}
Я предполагаю, что смогу получить детали заказа с этим, размещенным внутри цикла
$order_items = Mage::getResourceModel('sales/order_item_collection')
Я немного не уверен, как это отфильтровать. Я знаю, что он должен быть отфильтрован по идентификатору продукта, а также заказ должен быть сделан в течение последних 2 недель.
Как должен выглядеть синтаксис для этого запроса, пожалуйста?
Ответы:
Давайте начнем с размышлений о SQL, а не о Magento (мы доберемся до него позже). Я бы написал так (игнорируя часовые пояса для простоты):
Этот запрос работает (я проверял). Итак, как мы будем писать этот запрос в Magento?
sales_flat_order_item
- у Magento есть специальная коллекция ресурсов для этой таблицы; мы можем использовать это.SUM
в одном из столбцовWHERE
естьBETWEEN
предложение - мы можем, вероятно, использоватьZend_Db_Expr
для вывода нашего пользовательского скользящего 2-недельного периода.GROUP
Давайте посмотрим, если мы не сможем собрать это вместе, тогда с быстрым вызовом, чтобы
reset
убедиться, что мы получаем только те столбцы, которые мы определяем, и ничего больше:Простое эхо
$query->getSelect()
показывает, что запрос отформатирован довольно хорошо:Другие соображения:
В будущем вы можете захотеть отфильтровать этот отчет на основе статуса заказа (присоединение к другой таблице) или вы можете убедиться, что часовые пояса точны (сейчас это отчетность на основе GMT).
Присоединиться просто:
Но добавление часовых поясов может стать сложным. Посмотрите на
Mage_Core_Model_Date
некоторые методы, которые конвертируют метки времени в и из GMT. Также загляните в коллекцию отчетов о продажах.Надеюсь, это поможет! Удачи.
источник
$query
было!