如何选择包含特定 JSON 列键的行,无论值如何。一切都在 Laravel 和 MySQL 中

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

我在 Laravel 10 中编写了这段代码:

$unit = Unit::whereJsonContains('prefixes->abc', 'cba')->first();
我收到了这个查询:
`select * from `units` where json_contains(`prefixes`, '\"cba\"', '$."abc"') limit 1`

我在数据库中有一行在“前缀”列中包含

{"abc":"cba","cde":100}
JSON。我的代码工作正常 - 它从数据库中选择正确的行。 我想选择包含名为“abc”的键的行,无论该键的值是什么。我无法实现这个目标。我想做出这样的选择:

`select * from `units` where json_contains(`prefixes`, '%', '$."abc"') limit 1`
但这在 phpadmin 中不起作用(它不选择任何内容)。

我无法通过 Laravel Eloquent 或原始 SQL 选择获得正确的查询。

我应该在 Laravel 中做什么以及 SQL 查询应该是什么样子?

php mysql laravel eloquent mysql-json
1个回答
1
投票

JSON_CONTAINS_PATH 就可以了,例如

select * from `units` where json_contains_path(`prefixes`, 'one', '$."abc"') limit 1
© www.soinside.com 2019 - 2024. All rights reserved.