postgresql – JSON Where使用Query Builder对值数组进行Clause

前端之家收集整理的这篇文章主要介绍了postgresql – JSON Where使用Query Builder对值数组进行Clause前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一个事物表的数据列中的 JSON值:

{a: [{b: 1},{b: 2}]}

我可以使用这样的原始查询获取包含等于1的b的所有内容

select * from things where data @> '{ "a": [{"b": 1}] }';

我知道我们可以使用带有Laravel:https://laravel.com/docs/5.4/queries#json-where-clauses的JSON where子句运行Laravel查询.我可以这样写:

Thing::where('a->c','foobar');

但是,我可以在Laravel的查询生成器的原始查询中写一个包含{b:1}的地方吗?

解决方法

Laravel( as of now)使用>进行操作.和 – >>运算符在这些“JSON where子句”中(至少对于Postgresql而言).这不是你想要达到的目标.

但是PostgresGrammar支持@>和< @运算符直接,所以你可以写:

Thing::where('data','@>','{"a":[{"b":1}]}')

猜你在找的Postgre SQL相关文章