我正在Spree 2.3.1上工作,我一直試圖根據2天的數量得到「暢銷書」的清單......任何想法?您如何獲得Spree暢銷品清單?
到目前爲止,我一直試圖拿出一個查詢中使用ActiveRecords幫手,我敢在新:
Spree::Product.includes(variants: {line_items: :order}).group('spree_products.id')
我不知道還能做什麼。似乎這將是可用的開箱即用的東西。
我正在Spree 2.3.1上工作,我一直試圖根據2天的數量得到「暢銷書」的清單......任何想法?您如何獲得Spree暢銷品清單?
到目前爲止,我一直試圖拿出一個查詢中使用ActiveRecords幫手,我敢在新:
Spree::Product.includes(variants: {line_items: :order}).group('spree_products.id')
我不知道還能做什麼。似乎這將是可用的開箱即用的東西。
這是我使用的方法:
第1步 - SQL/Rails的查詢
正如在他的評論中所建議的Sumeet。我會展開查詢以按日期限制訂單。
只有當您需要它時才使用它:管理面板很少被查看或網站本身並不受歡迎。
第2步 - 通過添加任務更新類羣
產品的位置。如果你想爲網站上的前端用戶,有很多用戶也止跌」提供了一個暢銷視圖擴展功能每次用戶顯示產品列表時,最好大量計算SQL操作。相反,您可以使用產品與分類關係中現有的位置字段,執行前一點的查詢並相應地更新位置。您也可以在訂單項屬於的分類範圍內的每個訂單之後觸發位置更新。
這是一個前端解決方案,所以我會牢記這一點。我結束了寫入原始的SQL,但我用一個別名捕獲總和,即sum(line_items.quantity)作爲total_qty。但是,我不斷收到一個錯誤,指出產品沒有total_qty屬性,但是使用raw sql執行相同的查詢。去搞清楚! –
這種寶石,似乎你在找什麼https://github.com/sylvinho81/spree_best_sellers
我提取從代碼查詢,這就是在多少已經售出爲了獲得產品列表。
Spree::Product.active.select("spree_products.*, SUM(spree_line_items.quantity) as total_qty, spree_line_items.variant_id").
joins(:line_items).joins("INNER JOIN spree_orders ON spree_orders.id = spree_line_items.order_id").
where("spree_orders.state = 'complete'").
group("spree_line_items.variant_id, spree_products.id").order("total_qty DESC")
您可以使用Qwertie爲您提供的查詢。而不是做你可以在你的Gemfile添加寶石和在代碼中使用它:
寶石「spree_best_sellers」:混帳=> 「https://github.com/sylvinho81/spree_best_sellers.git」:支=> 「3-0穩定'
由於您使用的是Spree 2.3.1,因此您需要修改該寶石。
雖然此鏈接可能回答問題,但最好在此處包含答案的重要部分並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/17537232) –
SELECT SUM(quantity),variant_id FROM「spree_line_items」INNER JOIN spree_orders ON spree_orders.id = spree_line_items.order_id WHERE spree_orders.state ='complete'GROUP BY variant_id; –