【问题标题】:Laravel Sorting (orderBy or sortBy) is no working to sort database resultsLaravel 排序(orderBy 或 sortBy)无法对数据库结果进行排序
【发布时间】:2021-04-15 14:26:02
【问题描述】:

我正在使用 Laravel 6.x,并且一直在尝试在订单创建时按升序对订单进行排序。这是我尝试过的。我尝试改变orderBy和sortBy的位置,但没有任何改变。

 public function index()
    {
        $orders = Order::select("*", DB::raw("count(*) as order_count"))
            ->groupBy(DB::raw("coupon"))->sortBy('created_at', 'desc')
            ->get();

        return view('admin.order.index', compact('orders'));
    }

那么你能告诉我为什么这段代码没有正确排序吗?感谢您的支持!

【问题讨论】:

  • 如果您选择了所有内容,那么您还需要按所选的所有内容(计数除外)进行分组,否则您将在每一行中得到无意义(假设它完全有效)

标签: laravel laravel-6


【解决方案1】:

sortBy 由集合使用,对于查询,您必须使用 orderBy :

public function index()
    {
        $orders = Order::orderByDesc('created_at')
            ->get();

        return view('admin.order.index', compact('orders'));
    }

你也可以使用latest()

public function index()
    {
        $orders = Order::latest()
            ->get();

        return view('admin.order.index', compact('orders'));
    }

你不能在这里使用一个 groupBy 计数,否则你会得到一行。

提供更多关于你想要做什么的信息(你想知道每张优惠券的订单数量吗?

已编辑:

要获得您的订单 groupby 优惠券:

$coupons = Coupon::with(['order' => function($query){
    $query->latest();
})->withCount('order')->get();

那么你就可以使用它了:

@foreach($coupons as $coupon)
    Number of Order : {{ $coupon->order_count }}
    <br>
    Orders :
    @foreach($coupon->orders as $order)
         {{ $order->[...] }}
    @endforeach
@endforeach

【讨论】:

  • 我想要实现的是,将所有订单按优惠券分组,这些分组的订单应按降序排序。
猜你喜欢
  • 2019-04-29
  • 2013-12-06
  • 2016-01-17
  • 2021-08-21
  • 2013-10-03
  • 2018-11-28
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
相关资源
最近更新 更多