从两列中搜索最低价格

时间:2019-10-22 14:29:12

标签: php laravel eloquent

我有两列常规价格和销售价格。我必须从两列中搜索最小价格产品。

$products = $products->whereBetween('ecommerce_sku.regular_price', [$minPrice, $maxPrice]);

3 个答案:

答案 0 :(得分:0)

$productRegular = $products->whereBetween('ecommerce_sku.regular_price',
          [$minPrice, $maxPrice])->orderBy('regular_price')->take(1)->get();

$productSale = $products->whereBetween('ecommerce_sku.sale_price',
          [$minPrice, $maxPrice])->orderBy('sale_price')->take(1)->get();
  • 按价格对数据进行排序,然后获取最高的价格。

您将获得价格在给定范围内的最低价

比较并得到较小的一个。

  $smallerValue=  $productRegular->regular_price> $productSale->sale_price?
  $productSale->sale_price:  $productRegular->regular_price

您也可以使用case语句来获得较小的值。

答案 1 :(得分:0)

因此,您的代码将返回其价格在两个值之间的所有产品的列表。如果您想获得最低价格,请按价格订购并获得第一个价格:

$product = $products
    ->whereBetween('ecommerce_sku.regular_price', [$minPrice, $maxPrice])
    ->orderBy('ecommerce_sku.regular_price', 'asc')
    ->first();

现在它将是价格最低的产品。这对您有意义吗?

答案 2 :(得分:0)

如果您只希望两列的最低价格,可以这样做:

$product = Product::orderByRaw('LEAST(regular_price, sale_price) asc')
               ->first();

这将带来最低regular_pricesale_price的产品。