加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-13 15:53:28 所属栏目:百科 来源:网络整理
导读:这是一个事物表的数据列中的 JSON值: {a: [{b: 1},{b: 2}]} 我可以使用这样的原始查询来获取包含等于1的b的所有内容: select * from things where data @ '{ "a": [{"b": 1}] }'; 我知道我们可以使用带有Laravel:https://laravel.com/docs/5.4/queries#js
这是一个事物表的数据列中的 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}]}')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读