Saya mencoba mencari tahu berapa kali suatu produk dipesan selama dua minggu terakhir. Sejauh ini saya memiliki loop mendapatkan produk.
foreach($productCollection as $product){
}
Saya berasumsi saya harus bisa mendapatkan detail pesanan dengan ini ditempatkan di dalam loop
$order_items = Mage::getResourceModel('sales/order_item_collection')
Saya sedikit tidak yakin tentang cara memfilter ini. Saya tahu bahwa itu perlu disaring oleh id produk dan juga pesanan harus sudah dibuat dalam 2 minggu terakhir.
Seperti apa seharusnya sintaks untuk query ini?
Jawaban:
Mari kita mulai dengan memikirkan SQL, bukan Magento (kita akan sampai di sana nanti). Saya akan menulisnya (mengabaikan zona waktu untuk kesederhanaan):
Kueri itu berfungsi (saya uji). Jadi, bagaimana kita akan menulis kueri ini di Magento?
sales_flat_order_item
- Magento memiliki koleksi sumber daya khusus untuk tabel ini; kita bisa memanfaatkannya.SUM
di salah satu kolomWHERE
memilikiBETWEEN
klausa - kita mungkin dapat menggunakanZend_Db_Expr
untuk menampilkan jangka waktu 2 minggu bergulir kustom kami.GROUP
Mari kita lihat apakah kita tidak bisa menggabungkannya, kemudian, dengan panggilan cepat
reset
untuk memastikan bahwa kita hanya mendapatkan kolom yang kita tentukan, dan tidak ada yang lain:Gema sederhana
$query->getSelect()
menunjukkan kepada kami bahwa kueri diformat dengan cukup baik:Pertimbangan lain:
Di masa mendatang, Anda mungkin ingin memfilter laporan ini berdasarkan status pesanan (bergabung ke tabel lain) atau Anda mungkin ingin memastikan bahwa zona waktu akurat (sekarang ini pelaporan berdasarkan GMT).
Bergabung itu sederhana:
Tetapi menambahkan zona waktu bisa menjadi rumit. Lihat
Mage_Core_Model_Date
beberapa metode yang mengubah cap waktu ke dan dari GMT. Lihat juga koleksi laporan penjualan.Semoga itu bisa membantu! Semoga berhasil.
sumber
$query
ada!