Laravel排序结果按周分组

Laravel排序结果按周分组,laravel,laravel-5.6,laravel-collection,Laravel,Laravel 5.6,Laravel Collection,有酒店预订申请 我想获得本周预订计数和上周预订计数 所以我通过下面的查询实现了这一点,它通过周数给出日期。我想把它分类 查询: $byweek = Reservation::all()->groupBy(function($date) { return Carbon::parse($date->check_in)->format('W'); }

有酒店预订申请

我想获得
本周
预订计数和
上周
预订计数

所以我通过下面的查询实现了这一点,它通过周数给出日期。我想把它分类

查询:

$byweek = Reservation::all()->groupBy(function($date) {
                                    return Carbon::parse($date->check_in)->format('W');
                                });
输出如下:

$byweek = Reservation::orderBy('check_in')->get()->groupBy(function($date) {
                                return Carbon::parse($date->check_in)->format('W');
                            });

这里的
16
17
是周数,我如何对其排序以获得
17
16

$byweek = Reservation::all()->groupBy(function($date) {
                                    return Carbon::parse($date->check_in)->format('W');
                                });

$byweek = $byweek->reverse();
完成

获取所有记录,然后反向收集以获取反向17、16、15等。。订购。

我想你可以试试

$byweek = Reservation::all()
            ->groupBy(DB::raw('WEEK(created_at)'))
            ->orderBy(DB::raw('COUNT(id)','desc'));

Laravel集合中有方法
->sortKeys()
->sortKeysDesc()

PHP也有
ksort()
函数。

尝试在查询中使用orderBy,它的工作原理如下:

$byweek = Reservation::orderBy('check_in')->get()->groupBy(function($date) {
                                return Carbon::parse($date->check_in)->format('W');
                            });
不要忘记必须使用get()而不是all()。
我尝试了这种方法,因为我希望每周内的物品都能被订购,而且效果很好。

或者,如果你想办法让两周计数,那就更好了