首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >对包含JSON数组的JSON字段执行Laravel 5.4查询

对包含JSON数组的JSON字段执行Laravel 5.4查询
EN

Stack Overflow用户
提问于 2018-06-05 07:30:54
回答 2查看 603关注 0票数 0

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

代码语言:javascript
复制
[
"0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12",
"f7c748d4-8718-441e-aa69-91b890ead5ed"
],

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

我的查询正确吗?

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

下面写json select查询的方法正确吗?考虑到我如何将uuid作为数组存储在定义为JSON的代理列中?

代码语言:javascript
复制
'JSON_CONTAINS(agencies->"$[*]", "0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12"

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

但这篇文章中的解决方案与我试图做的不同,我对它的修改并没有给我带来任何用户,相反,我总是得到null。

EN

回答 2

Stack Overflow用户

发布于 2018-06-05 07:38:52

我相信这就是你想要的:

代码语言:javascript
复制
$users = User::whereRaw('JSON_CONTAINS(agencies, ?)', ['0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12'])->get();

它也将很快得到查询构建器的支持。See PR

票数 0
EN

Stack Overflow用户

发布于 2018-06-27 09:21:58

MySQL需要一个JSON字符串:

代码语言:javascript
复制
$users = User::whereRaw('JSON_CONTAINS(agencies, ?)',
    ['"0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12"'])->get();
$users = User::whereRaw('JSON_CONTAINS(agencies, ?)',
    [json_encode('0eb2edf0-50cb-44ff-a0a6-b2a104a9dc12')])->get();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50690094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档