Bol*_*lek 2 postgresql laravel eloquent
data我的表中有 json 类型的列。该查询不起作用:
Advert::where('data->price', '>', 2000)->get();
Run Code Online (Sandbox Code Playgroud)
作为回应,我得到了价格低于 2000 的元素。QueryBuilder 在数据库上运行它:
SELECT * FROM "adverts" WHERE "data"->>'price' > '2000'
Run Code Online (Sandbox Code Playgroud)
我不知道出了什么问题。看起来价格正在转换为字符串,但在数据库中保存为整数。
{"price": 500}
Run Code Online (Sandbox Code Playgroud)
PostgreSQL 将值作为字符串进行比较,从第一个字符开始。这就是为什么 500 比 2000 “更高”。您需要使用原始表达式将价格转换为整数:
Advert::where(DB::raw('("data"->>\'price\')::int'), '>', 2000)->get();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1121 次 |
| 最近记录: |