首页 > 解决方案 > 如何比较 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 中做到这一点

标签: jsonlaravelpostgresqleloquent

解决方案


我这样解决了query->whereRaw('(data -> \'vegetables\' -> \'tomato\' -> \'weight\' ->> \'value\')::int >= '. (int)12) 这里data是表格的一列,->显示 JSON 结构->>的列,显示列的值,::int- 就像 CAST。


推荐阅读