首页 > 解决方案 > Laravel 8中的多列orderBy

问题描述

我有一个电子商务网站,我想先按库存对产品页面中的产品进行排序,所以我这样做了,它工作得很好:

$products = Product::orderByDesc('quantity')->get();

现在,我在产品表中添加了一个新列 product_order ,它将采用一个整数,以便我可以自定义对产品进行排序,我尝试了以下代码:

$products = Product::orderByDesc('quantity')->orderByDesc('product_order')->get();

问题是它只按数量排序,第二个orderByDesc无效,我怎样才能使它有效?

标签: laravel-8

解决方案


我设法通过执行以下操作解决了这个问题:

$productsQty = Product::orderByDesc('product_order');
    $products = $productsQty->orderByDesc('quantity')->get();
    foreach ($products as $product) {
        if($product->quantity <= 0) {
            $product->product_order = 0;
            $product->save();
        }
    }

推荐阅读