Laravel whereJsonContains查询在5.7中不起作用

问题描述 投票:0回答:2

我一直在我的项目中遇到问题。我想搜索我的json数据。但无法做到这一点。这是我的查询

$variations = User::whereJsonContains('addon->ram', '>', 0)->count();
return $variations;

我的json数据存储在addon列中,数据是

{"ram":"87","base-driven":"89"}

在这个查询中我得到错误说

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误; (SQL:从users中选择count(*)作为聚合,其中0 json_contains(addon - >'$。“ram”',“>”)

我谷歌但它无法解决这个问题

提前致谢

php mysql json laravel
2个回答
0
投票

这是因为你提供“87”和“89”作为字符串。尝试用数字替换它:

{"ram":87,"base-driven":89}

0
投票

试试吧

$variations = User::where('addon->ram', '>', 0)->count();
return $variations;

如果你遇到一些错误,请留出时间。

当你将它保存为字符串时,你可能需要做类似的事情

Laravel的WHERE JSON_EXTRACT(addon, "$[ram]") > 0;

© www.soinside.com 2019 - 2024. All rights reserved.