我有两列常规价格和销售价格。我必须从两列中搜索最小价格产品。
$products = $products->whereBetween('ecommerce_sku.regular_price', [$minPrice, $maxPrice]);
答案 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_price
或sale_price
的产品。