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}]}') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |