在用户表中,我有一个名为“ 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 select查询的正确方法?

'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

10-04 10:47