【问题标题】:OrderByRaw in LaravelLaravel 中的 OrderByRaw
【发布时间】:2021-04-24 10:32:41
【问题描述】:

我正在制作一个过滤产品的应用

我想将此查询块添加到我的$products = $products-> newQuery();

我正在使用$products = $products-> newQuery();,因为我正在使用过滤器进行查询。示例:

$products = $products->newQuery();

  if ($request->has('brand') && !empty($brand)) {
            $products->where('brand', '=', $brand);
        }

        if ($request->has('size') && !empty($size)) {
            $products->whereHas('stocks', function($query) use ($size) {
                $query->where('size', '=', $size);
            });
        }

我想添加这个查询

 $best_sellers = OrderItem::select('product_id')->groupBy('product_id')->orderByRaw('SUM(quantity) DESC')->limit(2)->get();

我之前在其他方法中使用过它,它可以工作,但我不知道如何集成它

我试过了:

$products->whereHas('order_items', function($query) {
                        $query->select('product_id')->groupBy('product_id')->orderByRaw('SUM(quantity) DESC');

});

但是没有成功

有什么想法吗?谢谢

更新错误:

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    你需要使用with()添加关系数据whereHas()它只是用于过滤它不添加新键

    例子

    $products->with(['order_items'=> function ($q) {
        $q->select('product_id')->groupBy('product_id')->orderByRaw('SUM(quantity) DESC')->limit(2)->get();
    }]);
    

    【讨论】:

    • 如果我这样做:$products->whereHas('order_items', function($query) use ($size) { $query->select('product_id',\DB::raw('SUM(quantity) as order_sum'))->groupBy('product_id')->orderBy('order_sum', 'DESC'); }); 当我这样做时会发生同样的事情$products->whereHas('order_items', function($query) { $query->select('product_id')->groupBy('product_id')->orderByRaw('SUM(quantity) DESC'); }); 它只会退回已售出的产品,但不会添加销售数量或订购它们
    • 那我该如何整合呢?我需要 OrderItem 表并且能够将其添加到 $products,所以像 $order = OrderItem:: ... 这样的查询对我不起作用
    • 好的,我试过了:$products->with('order_items', function ($query) { $query->select('product_id')->groupBy('product_id')->orderByRaw('SUM(quantity) DESC'); });(因为 [ ] 我遇到了代码错误)但它仍然不起作用:/
    • @jagcweb 我将其设为数组以修复该代码错误
    • 嗨,还是不行。它不会使用该查询对产品进行任何更改
    猜你喜欢
    • 2019-05-21
    • 2013-12-02
    • 1970-01-01
    • 2015-10-28
    • 2020-09-27
    • 2020-11-19
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多