两个字段比较查询
可以使用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表达式来处理。