勾股OA在线文档

两个字段比较查询

可以使用where方法进行两个字段的比较。例如,以下示例展示了如何通过比较price和market_price两个字段来查询折扣大于等于30%的商品:

use think\facade\Db;

Db::name('goods')
    ->where('price/market_price', '<=', 0.7) // 折扣小于等于0.7(即打3折及以上)
    ->select();

在上面的示例中,where方法的第一个参数使用了两个字段的除法运算符 /,表示计算价格的折扣率。然后将这个折扣率与0.7进行比较,筛选出符合条件的商品。

另外,也可以使用普通的比较运算符对两个字段进行比较。例如,以下示例展示了如何查询销量高于库存的商品:

use think\facade\Db;

Db::name('goods')
    ->where('sales', '>', Db::raw('stock')) // 销量大于库存
    ->select();

在上面的示例中,where方法的第二个参数使用了Db::raw方法,使得stock字段不被解析为字符串,而被当作原生的SQL表达式来处理。