这样做的目的是从订单表中获得最畅销的产品。
Order::select('product_id', 'price')->get()->groupBy('product_id')
->map(function ($row) {
return $row->count('product_id');
});
订单表如下所示
我得到的结果是:
product_id: count
"8" : 2,
"34": 1,
"36": 1,
"28": 1,
"31": 1,
"40": 1,
"44": 1,
"46": 1,
"47": 2
但我还是要点伯爵的菜。我该怎么做?
预期
"8" : 2,
"47": 2,
"34": 1,
"36": 1,
"28": 1,
"31": 1,
"40": 1,
"44": 1,
"46": 1,
3条答案
按热度按时间0ejtzxu11#
你需要这样做:
bxgwgixi2#
试试这个,
在这里,原始查询用于对产品id进行计数,然后进行分组,这样我们就可以获得每个产品id的计数,然后根据需要按计数进行最终排序。
我希望你能理解,如果需要任何关于上述代码的解释,请随时询问。
nzkunb0c3#
你可以用
sortBy
收藏方法:如果要按降序排序:
如果要使用sql进行排序:
注意:您可能需要在
->groupBy
: