这是一个事物表的数据列中的
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}]}')