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

如何通过Laravel Eloquent实现满足列间运算关系的prices表查询?

Laravel Eloquent实现指定查询的方法

问题背景

我有一个名为prices的MySQL表,结构及数据如下:

Name  | price | amount | total
-------------------------------
name1 |  15   |   2    |  17   
name2 |  20   |   3    |  20
name3 |  25   |   4    |  29
name4 |  30   |   5    |  35

需要获取满足price与amount之和等于total的记录的Name字段(对应name1和name3),原生SQL语句为:SELECT Name FROM prices WHERE price + amount = total。想知道拥有Price模型的情况下,能否用Laravel Eloquent实现该查询?

实现方案

完全可以用Eloquent实现,这里提供两种常用写法:

  • 使用whereRaw直接传入原生条件
    这种方式最直观,直接把原生SQL的条件部分传入whereRaw方法:
$names = Price::select('Name')
    ->whereRaw('price + amount = total')
    ->pluck('Name');

pluck('Name')会直接返回包含所有符合条件的Name值的集合,和原生SQL查询结果一致。

  • 结合DB::raw构造查询条件
    如果更倾向于Eloquent的链式调用风格,可通过DB::raw()来包裹计算表达式和字段:
use Illuminate\Support\Facades\DB;

$names = Price::select('Name')
    ->where(DB::raw('price + amount'), '=', DB::raw('total'))
    ->pluck('Name');

这种写法会让Eloquent正确解析原生SQL逻辑,最终生成的SQL语句和你写的原生查询完全相同。

不管用哪种方式,都能精准筛选出name1和name3这两条记录的Name字段值。

内容的提问来源于stack exchange,提问作者Humam Tlay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:06:22