Laravel按周分组排序结果

4

拥有一个酒店预订应用程序。

我想获取本周的预订数量和上周的预订数量。

所以我使用以下查询实现了这一点,它可以通过周数给出日期。我想对其进行排序。

查询语句:

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

输出结果如下:

enter image description here

这里的 1617 是周数,我该如何排序来得到 1716 呢?

或者最好提供一种获取两周计数的方式 - arun
4个回答

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

$byweek = $byweek->reverse();

完成

获取所有记录,然后反转集合以获得反向17、16、15等顺序。


3

I think y try

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

1

0

尝试在查询中使用orderBy,像这样就可以完美地工作:

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

不要忘记使用get()而不是all()。我尝试了这种方法,因为我希望每个星期内的对象被排序,并且它完美地运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接