json - 如何比较 Laravel 中 JSONB 列的字段?
问题描述
我有一个 JSONB(postgresql) 类型的列,我需要检查这个 JSON 结构的一个字段。例如data->vegetables->tomato->weight->value >= "12"
. 我用过whereJsonContains
,但它只支持= or include
,我也用过where('data->vegetable->tomato->weight->value','>=',12)
,结果是错误的,我读到可能是因为类型。它是 Json 结构中的字符串,12 也是字符串。但我知道我可以这样做 (int)12 并且它会得到解决。但无法理解如何在 Eloquent 中做到这一点
解决方案
我这样解决了query->whereRaw('(data -> \'vegetables\' -> \'tomato\' -> \'weight\' ->> \'value\')::int >= '. (int)12)
这里data
是表格的一列,->
显示 JSON 结构->>
的列,显示列的值,::int
- 就像 CAST。
推荐阅读
- javascript - JavaScript 中的简单前馈神经网络
- android - 如何在 Android 中获取可用网络(GSM/LTE、WiFi 等)的列表
- python - 如何将日期时间转换为数字数据类型?
- ios - Xcode 10:iOS Team Provisioning Profile 不支持 $(TeamIdentifierPrefix)* Pass Type ID
- heroku - 如何在 Heroku 中部署和运行 clojurescript 应用程序
- html - 4 列与 bootstrap 3.3.7 不正确对齐
- javascript - 如何在javascript中计算平均成绩
- c# - 如何反序列化 JSON 并在 C# 中获取值
- php - 将 PHP 页面连接到 Wordpress 站点
- php - pdo驱动在linux中没有价值