如何比较 Laravel 中 JSONB 列的字段?
Posted
技术标签:
【中文标题】如何比较 Laravel 中 JSONB 列的字段?【英文标题】:How can I compare field from JSONB column in Laravel? 【发布时间】:2021-02-24 08:53:21 【问题描述】:我有一个 JSONB(postgresql) 类型的列,我需要检查这个 JSON 结构的一个字段。例如data->vegetables->tomato->weight->value >= "12"
。我使用了whereJsonContains
,但它只支持= or include
,我也使用了where('data->vegetable->tomato->weight->value','>=',12)
,结果错误我读到可能是因为类型。它是 Json 结构中的字符串,12 也是字符串。但我知道我可以这样做 (int)12 并且它会得到解决。但无法理解如何在 Eloquent 中做到这一点
【问题讨论】:
【参考方案1】:我这样解决了 query->whereRaw('(data -> \'vegetables\' -> \'tomato\' -> \'weight\' ->> \'value\')::int >= '. (int)12)
这里data
是表的列,->
显示 JSON 结构的列,->>
显示列的值,::int
- 就像 CAST。
【讨论】:
以上是关于如何比较 Laravel 中 JSONB 列的字段?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据postgres的jsonb列的where条件(无本机查询)使用jpa在spring boot中选择数据?