JSON_CONTAINS无法识别我的mysql v.8.0.17 laravel 5.6列

JSON_CONTAINS无法识别我的mysql v.8.0.17 laravel 5.6列,laravel,mysql-8.0,Laravel,Mysql 8.0,我必须做一个类似的查询: SomeModel::其中rawjson_包含一列,'$.a'->get 列包含JSON*{a:null}* 使用mysql 5.7版,一切正常,我得到了空集合,但在digitalocean上的数据库mysql v8.0.17上,我得到了以下错误: 带有消息“SQLSTATE[22032]::3141函数JSON_包含的参数1中的JSON文本无效:文档为空。在第0位。SQL:从JSON_包含列“$.a”的“表”中选择* 我被困在这里好几天了,请帮帮我 问题在于,您希望在

我必须做一个类似的查询:

SomeModel::其中rawjson_包含一列,'$.a'->get

列包含JSON*{a:null}*

使用mysql 5.7版,一切正常,我得到了空集合,但在digitalocean上的数据库mysql v8.0.17上,我得到了以下错误:

带有消息“SQLSTATE[22032]::3141函数JSON_包含的参数1中的JSON文本无效:文档为空。在第0位。SQL:从JSON_包含列“$.a”的“表”中选择*


我被困在这里好几天了,请帮帮我

问题在于,您希望在json列中搜索json字段,因此需要一个json数组,而不仅仅是一个空值

尝试以下方法:

SomeModel::whereRaw("JSON_CONTAINS(`column`, cast('[]' as json), '$.a')")->get();
列名也要使用“`”

由于您使用的是laravel 5.7,因此还可以使用laravel附带的功能,如:

SomeModel::whereJsonContains('your_json_field','your_value')->get();

问题是作为参数传递的空字符串

尝试:


谢谢你的回复!当我输入null时,它就工作了。让我困惑的是,它在5.7.28的时候是这样工作的。谢谢你的回复!:我实际上使用的是Laravel5.6,所以我没有这个雄辩的功能,但是演员也做到了。非常感谢。
SomeModel::whereRaw("JSON_CONTAINS(column, null, '$.a')")->get();