You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中基于price和sale列获取产品最高有效价格

解决方案

你当前的问题是直接取price的最大值,未结合sale字段的业务逻辑计算有效价格。根据你的需求,以下是几种Laravel下的实现方式,对应不同的有效价格定义:

1. 取每条记录中price和sale的较大值,再求整体最大值

如果有效价格定义为每条记录的实际售价是该记录中price与sale的较高值,再取所有记录的最高值,可使用GREATEST函数:

$products = Product::select(
    'products.*',
    \DB::raw("MAX(GREATEST(price, sale)) as max_effective_price")
)
->groupBy('products.id')
->get();

2. 优先使用sale,无sale时用price,再求整体最大值

如果有效价格定义为每条记录优先取非空的sale,否则取price,再取所有记录的最高值,可使用COALESCE函数:

$products = Product::select(
    'products.*',
    \DB::raw("MAX(COALESCE(sale, price)) as max_effective_price")
)
->groupBy('products.id')
->get();

3. 优先取最高促销价,无促销价时取最高原价

如果需求是产品的最高有效价格为其最高促销价,若无促销价则取最高原价,可使用IFNULL函数:

$products = Product::select(
    'products.*',
    \DB::raw("IFNULL(MAX(sale), MAX(price)) as max_effective_price")
)
->groupBy('products.id')
->get();

根据你的描述,正确结果为750而非800,推测你需要的是第三种方案——优先取促销价的最大值,而非原价的最大值。你可以根据实际业务逻辑调整选择。

内容的提问来源于stack exchange,提问作者nashwa ghazy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 09:34:56