php - Laravel 5.4 查询包含 JSON 数组的 JSON 字段

标签 php mysql json laravel

在用户表中,我有一个名为“agencies”的 json 列,它将数据存储为简单数组,如下所示:

[
"0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12",
"f7c748d4-8718-441e-aa69-91b890ead5ed"
],

以上是有效的 json。当我尝试选择包含 0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12 的所有用户时,我得到 null

我的查询正确吗?

$users = User::whereRaw('JSON_CONTAINS(agencies->"$[*]", "0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12")')->get();

考虑到我如何将 uuid 作为数组存储在定义为 json 的机构列中,以下是编写 JSON 选择查询的正确方法吗?

'JSON_CONTAINS(agencies->"$[*]", "0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12"

我从阅读中得到了上述选择的想法:Making a Laravel 5.4 query on a JSON field containing a JSON array

但是那篇文章中的解决方案与我想要做的不同,我对它的修改并没有给我返回任何用户,而是我总是得到 null。

最佳答案

我相信这就是你想要的:

$users = User::whereRaw('JSON_CONTAINS(agencies, ?)', ['0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12'])->get();

查询生成器也将很快支持它。 See PR

关于php - Laravel 5.4 查询包含 JSON 数组的 JSON 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50690094/

相关文章:

javascript - 将内部 json 数组与空格组合,将外部数组与换行符组合

javascript - Angular 显示来自 json 的单个记录

javascript - 如何在多部分表单上使用 AJAX、Javascript 和 PHP?

mysql - Rails 4 我应该使用回调过滤器还是对此有顾虑

javascript - 刷新页面时计时器会自动刷新

PHP MySQL 没有返回正确的计数

java.lang.NumberFormatException : null java. lang.Integer.parseInt(来源未知)

ios - 解析 JSON 数据时无法将字符串附加到数组

php - 使用 ajax PHP 在每个下拉列表中动态填充下拉列表

php - 如何查看数据库的结果是否与数组中的值匹配